一、call,apply,bind的相同点:
- 都是改变this指向的;
- 第一个参数都是this要指向的对象;
- 都可以利用后续参数传参;
二、call,apply,bind的区别:
- call和bind的参数是依次传参,一一对应的;
- 但apply只有两个参数,第二个参数为[数组]
- call和apply都是对函数进行直接调用,而bind方法返回的仍是一个函数;
```例如:
var a ={
name:'一一',
age:'22',
sex:'女',
hobby:'写代码'
say:function(sex,hobby) {
console.log(this.name,this.age,sex,hobby)
}
}
var b = {
name:'二二',
age:'23',
}
a.say.call(b,'男','学习');
a.say.apply(b,['男','学习'])
bind可以向call一样传参:
例如:
a.say.bind(b,'男','学习')();
但由于bind返回的仍然是一个函数,所以我们还可以在调用的时候再进行传参。
例如:
a.say.bind(b)('男','学习');
//结果为:"二二","23","男","学习"