Kontekstas per kintamąją JavaScript
Sprendimas toks: išorinėje funkcijoje įrašysime
this į bet kurį kintamąjį ir šis kintamasis
bus prieinamas vidinėje funkcijoje, kaip
ir visi kintamieji (dažniausiai šis kintamasis vadinamas
self). Taigi mes perduosime
this iš išorinės funkcijos į vidinę:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // atspausdins 'text'
let self = this; // įrašysime this į bet kurį kintamąjį, pavyzdžiui, į self
function child() {
console.log(self.value); // atspausdins 'text'
}
child();
}
Tegu pateiktas toks kodas:
<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;
}
}
Kodo autorius norėjo, kad praradus fokusą
ekrane būtų parodytas skaičiaus iš value
inputo kvadratas. Tačiau dėl nežinomų priežasčių praradus fokusą
konsolėje rodoma klaida. Ištaisykite kodo autoriaus klaidą.
Parašykite tekstą, kuriame paaiškinsite kodų autoriui, kodėl atsirado
jo klaida.