js中的this的指向問題詳解
this的指向在函數(shù)定義的時候是確定不了的,只有函數(shù)執(zhí)行的時候才能確定this到底指向誰,實(shí)際上this的最終指向的是那個調(diào)用它的對象
this永遠(yuǎn)指向的是最后調(diào)用它的對象,也就是看它執(zhí)行的時候是誰調(diào)用的
普通函數(shù)中的this指向:
情況1:如果一個函數(shù)中有this,但是它沒有被上一級的對象所調(diào)用,那么this指向的就是window,這里需要說明的是在js的嚴(yán)格版中this指向的不是window,但是我們這里不探討嚴(yán)格版的問題,你想了解可以自行上網(wǎng)查找。
情況2:如果一個函數(shù)中有this,這個函數(shù)有被上一級的對象所調(diào)用,那么this指向的就是上一級的對象。
情況3:如果一個函數(shù)中有this,這個函數(shù)中包含多個對象,盡管這個函數(shù)是被最外層的對象所調(diào)用,this指向的也只是它上一級的對象
構(gòu)造函數(shù)中的this指向:
function Fn(){ this.title= "你好"; } var a = new Fn(); console.log(a.title); //你好
首先new關(guān)鍵字會創(chuàng)建一個空的對象,然后會自動調(diào)用一個函數(shù)apply方法,將this指向這個空對象,這樣的話函數(shù)內(nèi)部的this就會被這個空的對象替代。
當(dāng)構(gòu)造函數(shù)的this碰到return時:
如果返回值是一個對象,那么this指向的就是那個返回的對象,如果返回值不是一個對象那么this還是指向函數(shù)的實(shí)例。
如果返回值是null, null也是對象,但是在這里this還是指向那個函數(shù)的實(shí)例,因?yàn)閚ull比較特殊。
以上就是本次介紹的全部知識點(diǎn)內(nèi)容,感謝大家對腳本之家的支持。
相關(guān)文章
javascript使用canvas實(shí)現(xiàn)餅狀圖效果
這篇文章主要為大家詳細(xì)介紹了javascript使用canvas實(shí)現(xiàn)餅狀圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-09-09javascript中創(chuàng)建對象的三種常用方法
在javascript中創(chuàng)建對象的三種方法,腳本之家以前發(fā)布過有簡單實(shí)例版的,大家可以參考下。2010-12-12微信小程序開發(fā)(二)圖片上傳+服務(wù)端接收詳解
本篇文章主要介紹了微信小程序開發(fā)(二)圖片上傳+服務(wù)端接收,具有一定的參考價值,有興趣的可以了解一下。2017-01-01Javascript實(shí)現(xiàn)視頻輪播在pc端與移動端均可
用Javascript實(shí)現(xiàn)視頻輪播,畢竟是客戶的需求嗎?所以盡量實(shí)現(xiàn)下,下面有個實(shí)現(xiàn)視頻輪播的示例,pc端與移動端均可以實(shí)現(xiàn),感興趣的朋友可以了解下2013-09-09js數(shù)字滑動時鐘的簡單實(shí)現(xiàn)(示例講解)
下面小編就為大家?guī)硪黄猨s數(shù)字滑動時鐘的簡單實(shí)現(xiàn)(示例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08教你如何自定義百度分享插件以及bshare分享插件的分享按鈕
在項目中我們常用到百度分享插件或者bshare分享插件,雖然官方都有自定義按鈕的功能,但是畢竟還是只有少數(shù)幾種,我們?nèi)绾蝸碇谱饔凶约禾厣姆窒戆粹o呢?2014-06-06