this指向的改變 call apply bind

世上哪有那么多傷心事,一定是你不讀書(shū),還愛(ài)胡思亂想? ------即將擁有八塊腹肌的程序員

我們先在script中運(yùn)行下面的幾行代碼看看打印的結(jié)果:


可以看出this.user的打印結(jié)果為undefined,因?yàn)閍調(diào)用的this指向的是window,而this.user的this指向的是obj。

call方法

? ? 這里我們使用call方法來(lái)改變this的指向,如圖:

? ??????

這里可以看到this.user打印的結(jié)果是obj中user的值,x,y打印的為3,4,所以call方法不僅僅可以改變this的指向,同時(shí)也能傳入對(duì)應(yīng)的參數(shù)。

apply方法

? ? apply方法跟call方法類(lèi)似,區(qū)別是apply方法傳入的參數(shù)是一個(gè)數(shù)組,這邊我們直接看打印結(jié)果


傳入的參數(shù)只跟第一個(gè)數(shù)組對(duì)應(yīng)其他參數(shù)對(duì)x,y并不影響

bind方法

? ? 這里bind方法跟call,apply又有些不同,如圖:


可以看到這里的this.user并沒(méi)有打印。因?yàn)閎ind不會(huì)立即執(zhí)行函數(shù),它的返回值: 就是一個(gè)函數(shù)(只不過(guò)是一個(gè)被改變好了 this 指向的函數(shù))所以我們可以通過(guò)下面的方式來(lái)調(diào)用修改好的函數(shù)


他對(duì)函數(shù)的參數(shù)傳遞有兩個(gè)方式:1. 調(diào)用返回的函數(shù)的時(shí)候傳遞 2. 直接從第二個(gè)參數(shù)開(kāi)始依次傳遞,數(shù)組也可以

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容