call()和apply():可以改变this的指向
运用场景: 假如你现在需要开发一个功能A,前端小明写了个功能B,而你发现功能A里面的部分功能和小明写的功能B一摸一样,你可以拿过就可以用,这个时候你就可以用到call(简单点说就是:借用别人的函数来实现自己的功能)
// call改变this指向
function Tyre(color, size) {//车轮胎
this.color = color;
this.size = size;
}
function Cardoor(width, height) {//车门
this.width = width;
this.height = height;
}
function Car(color, size, width, height) {//车组装
Tyre.call(this, color, size);
Cardoor.call(this, width, height)
}
let car = new Car('red', 388, 2, 1.6);
console.log(car);
// apply改变this指向
function Tyre(color, size) {//车轮胎
this.color = color;
this.size = size;
}
function Cardoor(width, height) {//车门
this.width = width;
this.height = height;
}
function Car(color, size, width, height) {//车组装
Tyre.apply(this, [color, size]);
Cardoor.apply(this, [width, height])
}
let car = new Car('red', 388, 2, 1.6);
console.log(car);
call和apply都可以改变this的指向,区别是传参列表不同: call 需要把实参按照形参的个数传入 apply 需要传入一个arguments |