2021-02-18
阅读:67
function Fun(){
this.name = "fun";
this.say = function(){
console.log(this.name);
console.log(arguments);
}
}
let people = {
name:"test"
}
let f = new Fun();
f.say.call(people,[1,2,3],1,3,'hello')
f.say.apply(people,[1,3]);
运行上述代码,可以看出,调用Fun中的say方法用call和apply都可以改变this.name 的值为people对象的name值,两者的区别在于 call支持多个参数
f.say.call(people,[1,2,3],1,3,'hello') //第一个参数为需要改变this指向的对象,其他参数都是调用方法传递进去的参数
apply只支持两个参数
f.say.apply(people,[1,3]);//第一个参数为需要改变this指向的对象,第二个参数为调用方法传递的参数,只支持数组格式