Konteks Melalui Pembolehubah dalam JavaScript
Penyelesaiannya adalah seperti berikut: dalam fungsi luar, tuliskan
this ke dalam mana-mana pembolehubah dan pembolehubah ini
akan boleh diakses dalam fungsi dalam, sama
seperti semua pembolehubah lain (biasanya pembolehubah ini dipanggil
self). Dengan cara ini, kita akan memindahkan
this dari fungsi luar ke fungsi dalam:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // akan memaparkan 'text'
let self = this; // tuliskan this ke mana-mana pembolehubah, contohnya, self
function child() {
console.log(self.value); // akan memaparkan 'text'
}
child();
}
Andaikan diberikan kod seperti berikut:
<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;
}
}
Pengarang kod ingin supaya apabila kehilangan fokus,
kuasa dua nombor dari value
input dipaparkan pada skrin. Walau bagaimanapun, untuk suatu sebab, apabila kehilangan fokus,
ralat dipaparkan dalam konsol. Betulkan ralat
dalam kod pengarang. Tuliskan teks di mana anda
memberikan penjelasan kepada pengarang kod, mengapa ralatnya
terjadi.