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