关于apply的用法
// // 方式一:
// function Animal(name, quantity) {
// this.name = name;
// this.quantity = quantity;
// }
// function Cat() {}
// Animal.apply(Cat.prototype,["coffeeCat",198]);
// Cat.prototype.info = function () {
// alert("name:"+this.name);
// alert("quantity:"+this.quantity);
// }
// var cat = new Cat();
// cat.info();
//方式二:
var Animal = function(name,quantity){
this.name = name;
this.quantity = quantity;
}
var Cat = function(){};
Cat.prototype = new Animal("coffeeCat",198);
Cat.prototype.info = function(){
alert("name:"+this.name);
alert("quantity:"+this.quantity);
}
var cat = new Cat();
cat.info();
方式二是我的写法,方式一是我参考问答区的代码改的,不过现在还不知道apply具体怎么使用,
// Animal.apply(Cat.prototype,["coffeeCat",198]);//这里第一个参数为什么填Cat.prototype,而不是window?
正在回答
同学你好,第二种写法没有问题,很棒!
apply方法第一个参数是对象,第二个参数是数组。第一个参数是对象目的是改变原来this的指向,如果Animal进行实例化,那么this指向的就是Animal对象,通过使用apply方法,将this指向了Cat的原型:

那么在Animal调用的时候,this指向的是cat的原型,也就是将name和quantity添加在了cat原型上,继承了Animal的属性,自己可以输出测试下。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星