İç içe geçmiş bir işlev senaryosunda "bu" göstericinin nasıl ele alındığı ile ilgili bir sorum var.
Aşağıdaki örnek kodu bir web sayfasına eklediğimi varsayalım. İç içe geçmiş işlevi "doSomeEffects ()" çağırdığımda bir hata alıyorum. Firebug'da kontrol ettim ve bu iç içe geçmiş işlevde olduğumda, "bu" işaretçinin aslında küresel "pencere" nesnesine işaret ettiğini gösteriyor - ki bunu beklemiyordum. Bir şeyi doğru anlamamalıyım çünkü iç içe geçmiş işlevi nesnenin bir işlevi içinde tanımladığım için, işlevle ilişkili olarak "yerel" kapsama sahip olması gerektiğini düşündüm (yani "bu" gösterici nesnenin kendisine şu şekilde atıfta bulunacaktır: ilk "eğer" ifademde nasıl olduğu).
Herhangi bir işaretçi (kelime anlamı olmayan) takdir edilecektir.
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();