关于this的指向
一個函數中的this關鍵字的指向——通常情況,如果一個函數所屬一個對象,那么這個函數被這個函數所屬的對象調用執行,那么這個this就指向這個這個函數所屬的對象
注意:函數中的this指向是在調用時(運行時)決定的,而不是在函數定義的時候決定的。
例1.
這是一個函數聲明,由于 test 所屬于window對象,在我們調用test()的時候實際上調用test的對象是window(全局對象),所以this指向window。
例2.
因為test所屬于obj對象,并且由obj對象調用,所以this指向obj。
例3.
這里的test所屬于a對象,并且由a對象調用,所以this指向a。
雖然a屬于obj,但 test函數 所屬于a對象,而不屬于obj對象。
例4.
這個回調函數里面的this指向window,因為這個匿名函數由參數調用,這個調用者(也就是這個參數)不所屬于任何對象,所以默認的指向了window。
例5.
這個是由arguments對象調用,在傳遞參數時js自動把傳遞的匿名函數掛載到了arguments對象下,所以這個匿名函數也是所屬于arguments對象的,所以this指向了arguments。
例6.
由最終調用執行test的對象決定了test內的this的指向。
例7.(new關鍵字)
如果不使用new關鍵字調用執行,test里面的this指向調用執行test的對象。
如果不顯示的在代碼里面使用return,那么這個函數內部會默認的返回undefined。
如果使用new關鍵字調用執行,構造函數里面的this指向創建的實例對象A。
如果不顯示的在代碼里面使用return返回({},[],RegExp, Date, Function),那么這個構造函數內部會默認返回this(也就是創建的實例對象A)。
轉載于:https://www.cnblogs.com/liu-di/p/10396083.html
總結
- 上一篇: 进程和网络
- 下一篇: Oracle之to_char(值,'fm