call apply bind 使用小结

前段时间,写一个小例子的时候,遇到了this的一些坑。后来使用call apply bind去解决了下,在此总结下,加深理解
先解释下这三个函数的作用都是为了改变某个函数运行时候的上下文(内部this指向)
区别:

  • apply(context,[auguments1,arguments2,...]) 第一个参数是上下文 第二个参数为当前函数需要传入的参数,只是这里可以放到一个数组中一起传进去
  • call(context,arguments1,arguments2,...) 和apply的区别只是函数需要的参数要一个一个的传进去
  • bind 方法会创建一个新函数,当这个新函数被调用时,它的this值是传递给bind()的第一个参数, 它的参数是bind()的其他参数和其原本的参数.
    代码地址
call apply bind 使用小结_第1张图片

我们通常在一些绑定事件(click,mousemove等),一般这个时候this会指向当前这个dom元素,这个时候如果我们需要修正this的指向,这里就可以使用bind(这里使用bind是因为,bind绑定的时候,并不会马上执行被绑定的函数,而是返回一个新的函数,供后面调用的时候使用。apply和call绑定后就会马上执行了)
如果需要在bing绑定的时候马上执行,可以使用下面这种写法:

function a(){//do somethind}.bind(someObj)();

参考资料:

深入浅出妙用 Javascript 中 apply、call、bind
MDN

你可能感兴趣的:(call apply bind 使用小结)