日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于this的指向

發布時間:2024/4/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于this的指向 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


一個函數中的this關鍵字的指向——通常情況,如果一個函數所屬一個對象,那么這個函數被這個函數所屬的對象調用執行,那么這個this就指向這個這個函數所屬的對象


注意:函數中的this指向是在調用時(運行時)決定的,而不是在函數定義的時候決定的。




例1.

function test(){return this; }test(); //window window.test(); //window

這是一個函數聲明,由于 test 所屬于window對象,在我們調用test()的時候實際上調用test的對象是window(全局對象),所以this指向window。



例2.

var obj = {test:function(){return this;} }obj.test(); //obj

因為test所屬于obj對象,并且由obj對象調用,所以this指向obj。



例3.

var obj = {a:{test:function(){return this;}} }obj.a.test();

這里的test所屬于a對象,并且由a對象調用,所以this指向a。
雖然a屬于obj,但 test函數 所屬于a對象,而不屬于obj對象。



例4.

var test = function(callBack){callBack(); }test(function(){console.log(this); //window })

這個回調函數里面的this指向window,因為這個匿名函數由參數調用,這個調用者(也就是這個參數)不所屬于任何對象,所以默認的指向了window。



例5.

var test = function(){arguments[0](); }test(function(){console.log(this); //arguments })

這個是由arguments對象調用,在傳遞參數時js自動把傳遞的匿名函數掛載到了arguments對象下,所以這個匿名函數也是所屬于arguments對象的,所以this指向了arguments。



例6.

var obj = {str:"1"}; var obj2 = {test:function(){return this;} } obj2.test(); //obj2obj.Fn = obj2.test; obj.Fn(); //objvar temp = obj2.test; temp(); //window window.temp() //window

由最終調用執行test的對象決定了test內的this的指向。



例7.(new關鍵字)

function test(){************---[[return undefined]]--- } Test();

如果不使用new關鍵字調用執行,test里面的this指向調用執行test的對象。
如果不顯示的在代碼里面使用return,那么這個函數內部會默認的返回undefined。

function Test(){************---[[return this]]--- } var A = new Test();

如果使用new關鍵字調用執行,構造函數里面的this指向創建的實例對象A。
如果不顯示的在代碼里面使用return返回({},[],RegExp, Date, Function),那么這個構造函數內部會默認返回this(也就是創建的實例對象A)。


轉載于:https://www.cnblogs.com/liu-di/p/10396083.html

總結

以上是生活随笔為你收集整理的关于this的指向的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。