ฉันมีคำถามเกี่ยวกับวิธีปฏิบัติต่อตัวชี้ "นี้" ในสถานการณ์จำลองฟังก์ชันซ้อนกัน
สมมติว่าฉันแทรกโค้ดตัวอย่างต่อไปนี้ลงในเว็บเพจ ฉันได้รับข้อผิดพลาดเมื่อเรียกใช้ฟังก์ชันซ้อน "doSomeEffects ()" ฉันตรวจสอบใน Firebug และระบุว่าเมื่อฉันอยู่ในฟังก์ชันที่ซ้อนกันนั้นตัวชี้ "นี้" จะชี้ไปที่วัตถุ "หน้าต่าง" ทั่วโลกซึ่งฉันไม่คาดคิด ฉันต้องเข้าใจบางอย่างไม่ถูกต้องเพราะฉันคิดว่าตั้งแต่ฉันประกาศฟังก์ชันซ้อนภายในฟังก์ชันของอ็อบเจ็กต์มันควรมีขอบเขต "โลคัล" ที่สัมพันธ์กับฟังก์ชัน (เช่นตัวชี้ "นี้" จะหมายถึงอ็อบเจ็กต์เองเช่น เป็นอย่างไรในคำสั่ง "if" แรกของฉัน)
คำแนะนำใด ๆ (ไม่มีการเล่นสำนวน) จะได้รับการชื่นชม
var std_obj = {
options : { rows: 0, cols: 0 },
activeEffect : "none",
displayMe : function() {
// the 'this' pointer is referring to the std_obj
if (this.activeEffect=="fade") { }
var doSomeEffects = function() {
// the 'this' pointer is referring to the window obj, why?
if (this.activeEffect=="fade") { }
}
doSomeEffects();
}
};
std_obj.displayMe();