Айнымалы арқылы контекст JavaScript-те
Шешуі мынадай: сыртқы функцияда
this-ті кез келген айнымалыға жазамыз
және бұл айнымалы ішкі функцияда қолжетімді болады,
барлық айнымалылар сияқты (әдетте бұл айнымалы
self деп аталады). Осылайша біз
this-ті сыртқы функциядан ішкі функцияға береміз:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // 'text' шығарады
let self = this; // this-ті кез келген айнымалыға жазамыз, мысалы, self-ке
function child() {
console.log(self.value); // 'text' шығарады
}
child();
}
Мынадай код берілген делік:
<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;
}
}
Код авторы инпуттың value-ындағы санның квадраты
экранға шығуын қалаған. Алайда, фокус жоғалған кезде
консольде қате шығады. Код авторының қатесін түзетіңіз.
Код авторына оның қатесінің неге пайда болғанын түсіндіретін
мәтінді жазыңыз.