Context thông qua biến trong JavaScript
Giải pháp như sau: trong hàm bên ngoài, hãy ghi
this vào bất kỳ biến nào và biến đó
sẽ có thể truy cập được trong hàm bên trong, giống như
tất cả các biến khác (thường biến này được gọi là
self). Bằng cách này, chúng ta sẽ truyền
this từ hàm ngoài vào hàm trong:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // sẽ in ra 'text'
let self = this; // ghi this vào bất kỳ biến nào, ví dụ: self
function child() {
console.log(self.value); // sẽ in ra 'text'
}
child();
}
Giả sử có mã như sau:
<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;
}
}
Tác giả mã muốn khi mất tiêu điểm,
màn hình sẽ hiển thị bình phương của số từ value
của input. Tuy nhiên, vì lý do nào đó, khi mất tiêu điểm,
lỗi được đưa ra trong console. Hãy sửa lỗi
của tác giả mã. Viết một văn bản trong đó bạn
giải thích cho tác giả mã tại sao lỗi của anh ấy
xảy ra.