差异:
1. 运行函数内容
- call和apply会调用函数
- apply与call:调用一个对象的一个方法,用另一个对象替换当前对象。
- 例如:
B.apply(A, arguments)即 A 对象应用 B 对象的方法。
- 例如:
- apply与call:调用一个对象的一个方法,用另一个对象替换当前对象。
- bind()不会调用函数
2. 参数形式
- call传递多个参数
- apply的
arguments参数为数组形式 - bind在返回的函数中传递参数
3. 返回值
函数.call()和函数.apply()会返回函数的返回结果函数.bind()返回函数- 需要再次调用, 才能得到函数的返回结果
4. 应用场景:
- call经常做继承
- apply经常和数组有关系,比如借助于数学对象实现数组的max、min
- bind不调用函数,但改变this指向,比如改变定时器内部的this指向