Kontext přes proměnnou v JavaScriptu
Řešení je následující: ve vnější funkci zapíšeme
this do libovolné proměnné a tato proměnná
bude dostupná ve vnitřní funkci, stejně jako
všechny ostatní proměnné (obvykle se tato proměnná nazývá
self). Tímto způsobem přeneseme
this z vnější funkce do vnitřní:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // vypíše 'text'
let self = this; // zapíšeme this do libovolné proměnné, například do self
function child() {
console.log(self.value); // vypíše 'text'
}
child();
}
Nechť je dán následující kód:
<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 kódu chtěl, aby při ztrátě fokusu
se na obrazovce zobrazil druhá mocnina čísla z value
inputu. Avšak z nějakého důvodu při ztrátě fokusu
se v konzoli objeví chyba. Opravte chybu
v autorově kódu. Napište text, ve kterém
poskytnete autorovi kódu vysvětlení, proč jeho chyba
nastala.