Dəyişən vasitəsilə kontekst JavaScript-də
Həll aşağıdakı kimidir: xarici funksiyada
this-i hər hansı bir dəyişənə yazacayıq və bu dəyişən
daxili funksiyada bütün digər dəyişənlər kimi
əlçatan olacaq (adətən bu dəyişən
self adlanır). Beləliklə, biz
this-i xarici funksiyadan daxili funksiyaya ötürəcəyik:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // 'text' çap edəcək
let self = this; // this-i hər hansı bir dəyişənə, məsələn, self-ə yazaq
function child() {
console.log(self.value); // 'text' çap edəcək
}
child();
}
Tutaq ki, belə bir kod verilib:
<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;
}
}
Kodun müəllifi istəyirdi ki, fokus itirildikdə
ekranda inputun value dəyərinin
kvadratı göstərilsin. Lakin, nədənsə fokus itirildikdə
konsola xəta mesajı verilir. Müəllifin kodundakı
xətanı düzəldin. Müəllifə onun xətanın niyə yaranmasını
izah etdiyiniz mətn yazın.