1.相同点
a.三者都可以用来改变this指向
b.接收的第一个参数都是this要指向的对象
c.都可以利用后续参数传参
2.不同点
a.call和bind传参一样,都是多个参数依次传入
b.apply只有两个参数,第二个参数为数组
c.call和apply都是对函数进行直接调用,而bind方法不会立即调用函数,而是返回一个修改this后的函数
3.演示代码
let obj1 = {
name: 'peng',
getName(){
console.log(this.name);
}
}
let obj2 = {
name: 'li',
getName(){
console.log(this.name)
}
}
obj1.getName.apply(obj2); // 'li'
obj1.getName.call(obj2); // 'li'
obj2.getName.bind(obj2)() // 'li'