Context ผ่านตัวแปรใน 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
ของ input ขึ้นบนหน้าจอ อย่างไรก็ตาม ด้วยเหตุผลบางประการ เมื่อสูญเสียโฟกัส
ข้อผิดพลาดจะปรากฏในคอนโซล แก้ไขข้อผิดพลาด
ของผู้เขียนโค้ด เขียนข้อความที่คุณจะ
ให้คำอธิบายแก่ผู้เขียนโค้ดว่าทำไมข้อผิดพลาดของเขาถึงเกิดขึ้น