call 和 apply 和 bind 三者区别

154 阅读1分钟

call 和 apply 和 bind共同点:

作用一致,修改函数this指向, 都可以将函数绑定到上下文中

环境对象 this

特点: 谁调用我,我就指向谁

  • 普通函数 : 函数名( ) this指向window
  • 对象方法 : 对象名.方法名( ) this指向对象
  • 构造函数 : new 函数名( ) this指向new创建实例对象
  • 注意 : this的指向无法动态修改

上下文调用

作用是修改函数内部的this

  • 函数名.call (修改后的this,形参1,形参2…………)
  • 函数名.apply (修改后的this, 数组或伪数组 )
  • 函数名.bind (修改后的this)

不会立即执行函数,而是得到一个修改this之后的新函数。
bind一般用于修改: 定时器函数、事件处理函数

call 和 apply 和 bind 三者区别

不同点:

传参方式不同 : call是按照顺序传参, apply是数组/伪数组传参
执行机制不同 : call和apply会立即执行函数, 而bind不会立即执行而是得到修改this的新函数