溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

js中的this的指向問題詳解

發(fā)布時(shí)間:2020-10-18 16:04:54 來源:腳本之家 閱讀:142 作者:你妻負(fù)我 欄目:web開發(fā)

this的指向在函數(shù)定義的時(shí)候是確定不了的,只有函數(shù)執(zhí)行的時(shí)候才能確定this到底指向誰,實(shí)際上this的最終指向的是那個調(diào)用它的對象

this永遠(yuǎn)指向的是最后調(diào)用它的對象,也就是看它執(zhí)行的時(shí)候是誰調(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時(shí):

如果返回值是一個對象,那么this指向的就是那個返回的對象,如果返回值不是一個對象那么this還是指向函數(shù)的實(shí)例。

如果返回值是null, null也是對象,但是在這里this還是指向那個函數(shù)的實(shí)例,因?yàn)閚ull比較特殊。

以上就是本次介紹的全部知識點(diǎn)內(nèi)容,感謝大家對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI