组合式继承是最js中最常用的继承方法,它融合了“原型继承”和“借用构造函数继承”的优点,使它拥有了这两种继承所具备的功能:
1、子类可以为父类的构造函数传参。
2、子类修改从父类继承的引用类型属性,不会影响到其他子类。
具体实现方法如下:
//构造方法
function Animal (name,age){
this.name=name;
this.age=age;
this.color=["red","blue","yellow"]
//对象方法
this.sleep=function() {
console.log(this.name+" 正在睡觉zzzz")
}
}
//类方法
Animal.Run=function () {
console.log(this.name+" 可以跑");
}
//原型方法
Animal.prototype.bite=function () {
console.log(this.name+" bite...")
}
function Cat(name,age) {
Animal.call(this,name,age);
}
Cat.prototype=new Animal();
Cat.prototype.constructor=Animal;
var cat=new Cat("LULU",3);
cat.color.push("pink");
console.log(cat.color);//["red","blue","yellow","pink"]
cat.sleep(); //LULU 正在睡觉zzzz
Animal.Run(); //Animal 可以跑
cat.bite(); //LULU bite...
function Dog(name,age){
Animal.call(this,name,age)
}
Dog.prototype=new Animal();
Dog.prototype.constructor=Animal;
var dog=new Dog("Jerry",4);
console.log(dog.color) //["red","blue","yellow"]
dog.sleep(); //Jerry 正在睡觉zzzz
dog.bite(); //Jerry bite...