call和apply的区别
它们的作用一模一样,区别仅在于传入参数的形式的不同。
apply接受两个参数,第一个参数指定了函数体内this对象的指向,第二个参数为一个带下标的集合,这个集合可以为数组,也可以为类数组,apply方法把这个集合中的元素作为参数传递给被调用的函数。call传入的参数数量不固定,跟apply相同的是,第一个参数也是代表函数体内的this指向,从第二个参数开始往后,每个参数被依次传入函数。
bind
- 与两者不同的是返回结果是一个函数
- 与call的传参方式一样
1 | var obj = { |
这三种方式到底是怎么实现改变this指向的呢?见此章节