寄生式组合继承
2019-07-14 本文已影响0人
南蓝NL
- 基本思想:和组合继承有点类似,不过它解决组合继承调用两次父类的构造函数,就是在子类的原型调用父类的构造函数时做下改变,用寄生式继承来做这步操作,我们想要无非不就是父类原型的一个副本而已
- 优点: 解决了组合继承两次调用父类的构造函数,普遍人员认为这是最理想的一种方式
function inheritPrototype(child,parent){
var prototype = Object(parent.prototype); // 创建对象
prototype.constructor = child; // 增强对像
child.prototype = prototype; // 指定对象
}
function Animal(speices){
this.speices = speices;
this.skills = ["jump","climb","catch","run"];
}
Animal.prototype.getSpeices = function(){
console.log(this.speices)
}
function Dog(species,color){
Animal.call(this,species);
this.color = color;
}
inheritPrototype(Dog,Animal);
// 在组合继承里面,这句是 Dog.prototype = new Animal()
var dog1 = new Dog('牧羊犬','black');
dog1.getSpeices(); // 牧羊犬