先貼結(jié)論:call, apply, bind把this的指向改變?yōu)閏all, apply, bind所傳入的第一個參數(shù)
相同點:
1.都是用來改變函數(shù)的this對象的指向。
2.第一個參數(shù)都是this要指向的對象。
3.都可以利用后續(xù)參數(shù)傳參。
不同點:
call()方法可以傳遞兩個參數(shù)。第一個參數(shù)是指定函數(shù)內(nèi)部中this的指向(也就是函數(shù)執(zhí)行時所在的作用域),第二個參數(shù)是函數(shù)調(diào)用時需要傳遞的參數(shù)。
call方法中的第一個參數(shù)是必須的,可以是null,undefined,this,但是不能為空.
apply方法的作用與call方法類似,也是改變this指向(函數(shù)執(zhí)行時所在的作用域),然后在指定的作用域中,調(diào)用該函數(shù)。同時也會立即執(zhí)行該函數(shù)。唯一的區(qū)別就是,它接收一個數(shù)組作為函數(shù)執(zhí)行時的參數(shù)。
apply方法的第一個參數(shù)也是this所要指向的那個對象,如果設(shè)為null或undefined或者this,則等同于指定全局對象。第二個參數(shù)則是一個數(shù)組,該數(shù)組的所有成員依次作為參數(shù),在調(diào)用時傳入原函數(shù)。原函數(shù)的參數(shù),在call方法中必須一個個添加,但是在apply方法中,必須以數(shù)組形式添加。
call,apply方法是在調(diào)用之后立即執(zhí)行函數(shù),而bind方法沒有立即執(zhí)行,需要將函數(shù)再執(zhí)行一遍。有點閉包的味道。
改變this指向的call,apply,bind使用方法及區(qū)別
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- call/apply/bind方法的來源call,apply和bind方法都是繼承自Function.protot...
- 本文首發(fā)我的個人博客:前端小密圈,評論交流送1024邀請碼,嘿嘿嘿??。 來自朋友去某信用卡管家的做的一道面試題,用...
- 參考《JavaScript設(shè)計模式與開發(fā)實踐》 this 跟別的語言大相徑庭的是,JavaScript的this總...
- 綁定 this 的方法 參考文章:綁定 this 的方法 this的動態(tài)切換,固然為 JavaScript 創(chuàng)造了...
- apply、call、bind apply call借用他人的函數(shù)方法 網(wǎng)上文章雖多,大多復(fù)制粘貼,且晦澀難懂,我...