在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python  HTML/ 關(guān)于js this指向的一個問題

關(guān)于js this指向的一個問題

var a={
    name:"xuxu",
    getname:function(){
        console.log(this);
        var b=function(){
            console.log(this);
        }
        b();
        console.log(Window);
    }
}
a.getname();

以上代碼中,getname中的this是指向a的我能理解,但是它里面的b函數(shù)中的this指向window是怎么理解呢,為什么b函數(shù)是由window調(diào)用呢
當(dāng)函數(shù)不作為對象的屬性被調(diào)用時,也就是我們常說的普通函數(shù)方式,此時的this總是指向全局對象 也就是說一個對象的屬性是一個函數(shù),如果這個函數(shù)由這個對象調(diào)用,那么這個函數(shù)里面的this是指向這個對象的,但是這個函數(shù)內(nèi)部的函數(shù),是按上面這句話執(zhí)行的,因為b函數(shù)不是直接當(dāng)做a的屬性調(diào)用的,它是普通調(diào)用因此默認(rèn)指向window

回答
編輯回答
幼梔

函數(shù)發(fā)生嵌套的時候,this 是不會自動傳遞的,除非你手動傳遞,常見的:

var a={
    name:"xuxu",
    getname:function(){
        console.log(this);
        var self=this;
        var b=function(){
            console.log(self);//對象 a
        }
        b();
        console.log(Window);
    }
}
a.getname();

當(dāng)然也可以通過 apply,call 傳遞 this,等你遇到了再去查查,先留個印象;

2017年8月4日 16:25
編輯回答
悶油瓶

參考這個問題下的回答。
只與調(diào)用時方式有關(guān),與所處位置無關(guān)。

2017年5月18日 04:17
編輯回答
老梗

可以參考《你不知道的JS》里面有js中this的幾種綁定用法,b()中this綁定在了全局window上

2018年6月23日 19:51