apply,call,bind

apply

  • apply(this的指向,[函数的参数,以数组形式传参])
  • 如果第一个参数未null或者undefined,那么this默认指向window
  • 此方法会将原函数立即执行,并且知识临时改变一次this的指向

call

  • call(this的指向,参数1,参数2,参数3......)
  • 参数为参数列表形式,且必须一次性传入所有参数
  • 如果第一个参数未null或者undefined,那么this默认值指向window
  • 此方法会将原函数立即执行,并且知识临时改变一次this的指向

bind

  • bind(this的指向,参数1,参数2,参数3......)
  • 参数为参数列表形式,参数可以分批次传入,最后函数执行的会将参数连在一起传入
  • 如果第一个参数未null或者undefined,那么this默认值指向window
  • 此方法不会将原函数立即执行,他会返回一个永久改变this指向的函数

小结

  1. 相同点
  • 都可以改变this的指向
  • 当第一个参数为null或undefined时,this默认指向window
  • 可以利用上一个特点求取一个数组中的最大值
var arr=[1,10,5,8,3,12];
//apply实现
console.log(Math.max.apply(null, arr)); //12
//call实现
console.log(Math.max.call(null,arr[0],arr[1],arr[2],arr[3],arr[4],arr[5])); //12
//bind实现
var max=Math.max.bind(null,arr[0],arr[1],arr[2],arr[3])
console.log(max(arr[4],max(arr[5])); //12,分两次传参
  1. 不同点
  • apply和call会立即执行原函数,并且只是暂时改变this的指向
  • bind不会立即执行原函数,而是返回一个永久改变this指向的函数
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • call、apply和bind是Function对象自带的三个方法,都是为了改变函数体内部 this 的指向。ap...
    考拉程序媛阅读 197评论 0 0
  • 如何正确判断 this,箭头函数的 this 是什么? 原则:1.元素绑定事件,方法中的 this 是元素本身2....
    行走的蛋白质阅读 176评论 0 1
  • 1.什么是this this是Javascript语言的一个关键字。它代表函数运行时,自动生成的一个内部对象,只能...
    淡然7698阅读 174评论 0 0
  • 一、作用 apply、call 、bind 它们三个都是调用函数,改变函数执行环境上下文,也就是改变 this 的...
    5吖阅读 128评论 0 0
  • apply、call 、bind 对 JavaScript 新手来说可能是在其他语言中没有遇到过的新概念,要理解这...
    VirtualX阅读 242评论 0 0