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 сандарынын квадраты чыгуусун
каалаган. Бирок, эмне үчүн болбосун, фокус жоголгондо
консольго ката чыгат. Код авторунун катасын оңдоп,
текст жазыңыз. Анда сиз код авторуна, анын катасынын
кайдан келип чыкканын түшүндүрүп бересиз.