Saya punya pertanyaan tentang bagaimana pointer "ini" diperlakukan dalam skenario fungsi bersarang.
Katakanlah saya memasukkan kode contoh berikut ini ke dalam halaman web. Saya mendapatkan pesan kesalahan saat memanggil fungsi bersarang "doSomeEffects ()". Saya memeriksa di Firebug dan ini menunjukkan bahwa ketika saya berada dalam fungsi bersarang itu, penunjuk "ini" sebenarnya menunjuk ke objek "jendela" global - yang tidak saya duga. Saya tidak harus memahami sesuatu dengan benar karena saya pikir karena saya mendeklarasikan fungsi bersarang dalam fungsi objek, itu harus memiliki ruang lingkup "lokal" dalam hubungannya dengan fungsi (yaitu, penunjuk "ini" akan merujuk ke objek itu sendiri seperti bagaimana di pernyataan "jika" pertama saya).
Setiap petunjuk (tidak ada permainan kata-kata) akan dihargai.
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();