this的指向在函數(shù)定義的時候是確定不了的,只有函數(shù)執(zhí)行的時候才能確定this到底指向誰,實際上this的最終指向的是那個調(diào)用它的對象
湘潭網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,湘潭網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為湘潭近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的湘潭做網(wǎng)站的公司定做!
this永遠指向的是最后調(diào)用它的對象,也就是看它執(zhí)行的時候是誰調(diào)用的
普通函數(shù)中的this指向:
情況1:如果一個函數(shù)中有this,但是它沒有被上一級的對象所調(diào)用,那么this指向的就是window,這里需要說明的是在js的嚴格版中this指向的不是window,但是我們這里不探討嚴格版的問題,你想了解可以自行上網(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ù)的實例。
如果返回值是null, null也是對象,但是在這里this還是指向那個函數(shù)的實例,因為null比較特殊。
以上就是本次介紹的全部知識點內(nèi)容,感謝大家對創(chuàng)新互聯(lián)的支持。