Kontekst preko spremenljivke v JavaScript
Rešitev je naslednja: v zunanji funkciji zapišemo
this v katero koli spremenljivko in ta spremenljivka
bo dostopna v notranji funkciji, kot
so vse spremenljivke (običajno to spremenljivko imenujemo
self). Tako bomo prenesli
this iz zunanje funkcije v notranjo:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // izpiše 'text'
let self = this; // zapišemo this v katero koli spremenljivko, na primer v self
function child() {
console.log(self.value); // izpiše 'text'
}
child();
}
Dana je naslednja koda:
<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;
}
}
Avtor kode je želel, da se ob izgubi fokusa
na zaslon prikaže kvadrat števila iz value
vnosnega polja. Vendar se ob izgubi fokusa
v konzolo izpiše napaka. Popravite napako
avtorja kode. Napišite besedilo, v katerem
pojasnite avtorju kode, zakaj je prišlo do
napake.