JavaScriptда ўзгарувчи орқали контекст
Ечим куйидагича: ташқи функцияда
this ни istalgan ўзгарувчига ёзамиз
ва бу ўзгарувчи ички функцияда хам
қолиб барча ўзгарувчилар каби кира олади (оддата бу ўзгарувчини
self дейишади). Шу тариқа биз
this ни ташқи функциядан ички функцияга ўтказамиз:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // 'text' ни чиқаради
let self = this; // this ни istalgan ўзгарувчига, масалан, 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 идаги
рақамнинг квадрати экранга чиқарилишини истаган.
Aммо, нима сабабдан бўлса ҳам, ёзиш ўчиғанда
консолда хатолик чиқади. Код муаллифининг хатосини
Tўғриланг. Сиз код муаллифига унинг хатоси нима
сабабдан юз берганини тушунтириб берадиган матн
ёзинг.