Kontext cez premennú v JavaScripte
Riešenie je nasledovné: vo vonkajšej funkcii zapíšeme
this do akejkoľvek premennej a táto premenná
bude prístupná vo vnútornej funkcii, ako
a všetky premenné (obvykle sa táto premenná nazýva
self). Týmto spôsobom prenesieme
this z vonkajšej funkcie do vnútornej:
"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 akejkoľvek premennej, napríklad do self
function child() {
console.log(self.value); // vypíše 'text'
}
child();
}
Nech je daný takýto 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 chcel, aby pri strate fókusu
sa na obrazovke zobrazil štvorec čísla z value
inputu. Avšak, z nejakého dôvodu pri strate fókusu
sa do konzoly vypíše chyba. Opravte chybu
autora kódu. Napíšte text, v ktorom
poskytnete autorovi kódu vysvetlenie, prečo nastala
jeho chyba.