自己理解的call,apply,bind方法

首先,js中call,apply,bind方法它們都有一個(gè)相同點(diǎn):更改函數(shù)中this的指向例如:




原本this指向的是window中的color:red,但使用了call和apply,讓他們的this指向了o,所以輸出了blue;

那它們的不同點(diǎn)呢?

首先是傳參不同,call后面的括號(hào)里可以第一個(gè)參數(shù)是自己所想要指向的this對(duì)象,后面的參數(shù)是函數(shù)所要傳入的參數(shù),并且它多用于函數(shù)的繼承。例如:


而apply后面的括號(hào)里可以第一個(gè)參數(shù)也是自己所想要指向的this對(duì)象,后面的參數(shù)一定要是數(shù)組,即apply(this,['a','b']);


而bind是比較特殊的一個(gè),它不像call,apply一樣調(diào)用了之后,函數(shù)立馬執(zhí)行,它是返回一個(gè)新的函數(shù),只不過(guò)新的函數(shù)中this指向已經(jīng)改變了。



bind括號(hào)后面的第一個(gè)值也是this指向的對(duì)象,其余的是函數(shù)的參數(shù)。

總結(jié):

call經(jīng)常用做繼承;

apply經(jīng)常跟數(shù)組有關(guān)系,比如借助于數(shù)學(xué)對(duì)象實(shí)現(xiàn)數(shù)組最大值最小值;

bind不調(diào)用函數(shù),但是還想改變this指向,比如改變定時(shí)器內(nèi)部的this指向;

?著作權(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)容