apply,call,bind

51 阅读1分钟

共同特点

        这三个函数都是改变函数执行时的上下文,简而言之就是改变函数运行时的this指向

apply

  • apply接受两个参数,第一个参数是this的指向,第二个参数是函数接受的参数,以数组的形式传入
  • 改变this指向后原函数会立即执行,且此方法只是临时改变this指向一次
  • 如果第一个参数为undefined,this指向window

call

  • call()的第一个参数也是this的指向,后面的传入的是一个参数列表
  • 改变this指向后原函数会立即执行,且此方法只是改变this指向一次
  • 第一个参数为null,undefined的时候,默认指向window

bind

  • 第一个参数也是this指向,后面传入一个参数列表
  • 改变this指向之后不会立即执行,而是返回一个永久改变this指向的函数
  • bind()会返回一个改变this指向的函数,不会立即执行,可以分成多次传参