相同点:1.都是用来改变函数的this对象指向的
2.调用时第一个参数都是需要指向的新对象
3.都可以利用后续参数传参
不同点:call、apply都是对函数的直接调用,而bind返回的是一个函数,需要进行再次调用才可以使用;
传递参数方式不同:call、bind 传递的是逗号分割的参数字符串,而apply第二个参数是一个数组;
具体使用如下:
let person={ name:'zhangsan', age:12, say:function(school){ console.log(this.name,this.age,school); } } let newobj={ name:'lisi', age:123 } //运用call、apply、bind 改变person中this指向 person.say.call(newobj,'清华大学'); person.say.apply(newobj,['北京大学']); person.say.bind(newobj,'五道口学院')();