call bind apply

call

call方法的第一個(gè)參數(shù)是要綁定給this的值,后面?zhèn)魅氲氖且粋€(gè)參數(shù)列表。當(dāng)?shù)谝粋€(gè)參數(shù)書(shū)null,undefined的時(shí)候,默認(rèn)傳給window.可以看個(gè)例子


apply

apply和call一樣,第一個(gè)參數(shù)和call一樣,后面?zhèn)魅氲?參數(shù)必須要是參數(shù)數(shù)組。當(dāng)?shù)谝粋€(gè)參數(shù)書(shū)null,undefined的時(shí)候,默認(rèn)傳給window。apply的例子是這樣的


可以看到,obj 是作為函數(shù)上下文的對(duì)象,函數(shù) getName 中 this 指向了 obj 這個(gè)對(duì)象。參數(shù) firstName 和 lastName 是放在數(shù)組中傳入 getName 函數(shù)。

bind


bind 方法不會(huì)立即執(zhí)行,而是返回一個(gè)改變了上下文 this 后的函數(shù)。而原函數(shù) printName 中的 this 并沒(méi)有被改變,依舊指向全局對(duì)象 window。

總結(jié)


call()、apply()和bind()都是用來(lái)改變函數(shù)執(zhí)行時(shí)的上下文,可借助它們實(shí)現(xiàn)繼承;call()和apply()唯一區(qū)別是參數(shù)不一樣,call()是apply()的語(yǔ)法糖;bind()是返回一個(gè)新函數(shù),供以后調(diào)用,而apply()和call()是立即調(diào)用。

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

  • apply、call、bind apply call借用他人的函數(shù)方法 網(wǎng)上文章雖多,大多復(fù)制粘貼,且晦澀難懂,我...
    sponing閱讀 2,201評(píng)論 2 32
  • 1. call() this call方法的參數(shù),應(yīng)該是一個(gè)對(duì)象。如果參數(shù)為空、null和undefined,正常...
    莊海鑫閱讀 460評(píng)論 0 1
  • 前言 我們都知道這三種方法都用于綁定this,但沒(méi)有區(qū)分好,很容易踩坑。繼多次踩坑之后我又踩坑了,所以決定再次學(xué)習(xí)...
    Ghj_小樹(shù)閱讀 492評(píng)論 0 4
  • 參考《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》 this 跟別的語(yǔ)言大相徑庭的是,JavaScript的this總...
    16manman閱讀 619評(píng)論 0 0
  • call bind apply call 先給一個(gè)官方描述吧: call() 方法調(diào)用一個(gè)函數(shù), 其具有一個(gè)指定的...
    小小小超子閱讀 266評(píng)論 0 0

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