apply,call,bind

apply

  • apply(this的指向,[函數(shù)的參數(shù),以數(shù)組形式傳參])
  • 如果第一個(gè)參數(shù)未null或者undefined,那么this默認(rèn)指向window
  • 此方法會(huì)將原函數(shù)立即執(zhí)行,并且知識(shí)臨時(shí)改變一次this的指向

call

  • call(this的指向,參數(shù)1,參數(shù)2,參數(shù)3......)
  • 參數(shù)為參數(shù)列表形式,且必須一次性傳入所有參數(shù)
  • 如果第一個(gè)參數(shù)未null或者undefined,那么this默認(rèn)值指向window
  • 此方法會(huì)將原函數(shù)立即執(zhí)行,并且知識(shí)臨時(shí)改變一次this的指向

bind

  • bind(this的指向,參數(shù)1,參數(shù)2,參數(shù)3......)
  • 參數(shù)為參數(shù)列表形式,參數(shù)可以分批次傳入,最后函數(shù)執(zhí)行的會(huì)將參數(shù)連在一起傳入
  • 如果第一個(gè)參數(shù)未null或者undefined,那么this默認(rèn)值指向window
  • 此方法不會(huì)將原函數(shù)立即執(zhí)行,他會(huì)返回一個(gè)永久改變this指向的函數(shù)

小結(jié)

  1. 相同點(diǎn)
  • 都可以改變this的指向
  • 當(dāng)?shù)谝粋€(gè)參數(shù)為null或undefined時(shí),this默認(rèn)指向window
  • 可以利用上一個(gè)特點(diǎn)求取一個(gè)數(shù)組中的最大值
var arr=[1,10,5,8,3,12];
//apply實(shí)現(xiàn)
console.log(Math.max.apply(null, arr)); //12
//call實(shí)現(xiàn)
console.log(Math.max.call(null,arr[0],arr[1],arr[2],arr[3],arr[4],arr[5])); //12
//bind實(shí)現(xiàn)
var max=Math.max.bind(null,arr[0],arr[1],arr[2],arr[3])
console.log(max(arr[4],max(arr[5])); //12,分兩次傳參
  1. 不同點(diǎn)
  • apply和call會(huì)立即執(zhí)行原函數(shù),并且只是暫時(shí)改變this的指向
  • bind不會(huì)立即執(zhí)行原函數(shù),而是返回一個(gè)永久改變this指向的函數(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)容

  • call、apply和bind是Function對(duì)象自帶的三個(gè)方法,都是為了改變函數(shù)體內(nèi)部 this 的指向。ap...
    考拉程序媛閱讀 206評(píng)論 0 0
  • 如何正確判斷 this,箭頭函數(shù)的 this 是什么? 原則:1.元素綁定事件,方法中的 this 是元素本身2....
    行走的蛋白質(zhì)閱讀 226評(píng)論 0 1
  • 1.什么是this this是Javascript語(yǔ)言的一個(gè)關(guān)鍵字。它代表函數(shù)運(yùn)行時(shí),自動(dòng)生成的一個(gè)內(nèi)部對(duì)象,只能...
    淡然7698閱讀 191評(píng)論 0 0
  • 一、作用 apply、call 、bind 它們?nèi)齻€(gè)都是調(diào)用函數(shù),改變函數(shù)執(zhí)行環(huán)境上下文,也就是改變 this 的...
    5吖閱讀 144評(píng)論 0 0
  • apply、call 、bind 對(duì) JavaScript 新手來(lái)說(shuō)可能是在其他語(yǔ)言中沒(méi)有遇到過(guò)的新概念,要理解這...
    VirtualX閱讀 267評(píng)論 0 0

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