Kontekst poprzez zmienną w JavaScript
Rozwiązanie jest następujące: w funkcji zewnętrznej zapiszemy
this do dowolnej zmiennej i ta zmienna
będzie dostępna w funkcji wewnętrznej, jak
wszystkie zmienne (zwykle tę zmienną nazywa się
self). W ten sposób przekażemy
this z funkcji zewnętrznej do wewnętrznej:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // wypisze 'text'
let self = this; // zapiszemy this w dowolnej zmiennej, na przykład w self
function child() {
console.log(self.value); // wypisze 'text'
}
child();
}
Niech będzie dany taki kod:
<input id="elem" value="3">
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', func);
function func() {
alert( square() );
function square() {
return this.value * this.value;
}
}
Autor kodu chciał, aby po utracie fokusu
na ekranie wyświetlił się kwadrat liczby z value
inputa. Jednakże z jakiegoś powodu po utracie fokusu
w konsoli pojawia się błąd. Popraw błąd
autora kodu. Napisz tekst, w którym
wyjaśnisz autorowi kodu, dlaczego powstał
jego błąd.