Kontekst muutuja kaudu JavaScriptis
Lahendus on järgmine: välimises funktsioonis salvestame
this suvalisse muutujasse ja see muutuja
on kättesaadav sisemises funktsioonis, nagu
kõik muutujad (tavaliselt nimetatakse seda muutujat
self). Nii edastame
this välimisest funktsioonist sisemisse:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // kuvab 'text'
let self = this; // salvestame this suvalisse muutujasse, näiteks self
function child() {
console.log(self.value); // kuvab 'text'
}
child();
}
Olgu antud selline kood:
<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;
}
}
Koodi autor soovis, et fookuse kaotamisel
ekraanile kuvataks sisendi value
ruut. Siiski, mingil põhjusel kuvatakse fookuse kaotamisel
konsooli viga. Parandage koodi autoril olev viga.
Kirjutage tekst, milles annate seletuse koodi autorile, miks tema
viga tekkis.