call、apply、bind,你有多了解?
call、apply、bind
1、相同也不同
我们先从浅显的部分开始讲,
- 这三个方法都可以改变this的指向,都可以进行传参,第一个参数都是修改this的指向
- call() 和 apply() 改变this指向后会立即执行函数
- bind() 改变this指向后不会立即执行
- call() 和 apply() 区别在于参数
· call() 第一个参数是修改的this指向,后续的参数都是传入该函数的值,他的传值只能一个个传
· apply() 第一个参数是修改的this指向,第二个参数是一个数组,所有传入该函数的值都放到该数组中
javaScript权威指南上的解释是:
call() 、apply()可以看作是某个对象的方法,
通过调用方法的形式来间接调用函数。
bind() 就是将某个函数绑定到某个对象上。
2、照常举