Контекст тавассути тағирёбанда дар 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
воридшавӣ намоиш дода шавад. Аммо, барои чаро пас аз аз даст додани фокуси
дар консоли хатогие рух медиҳад. Хатои
муаллифи рамзро ислоҳ кунед. Матне нависед, ки дар он шумо
ба муаллифи рамз шарҳ диҳед, ки чаро хатои
вай ба вуҷуд омадааст.