组合继承
分别继承超类自身的属性方法和超类原型的属性和方法,这是属于数据类型与数据类型之间的继承.
缺点:会调用两次超类构造函数.一次是创建子类原型的时候,一次是在子类构造函数内部.
}
SuperType.prototype.sayName=function(){
alert(this.name);
}
function SubType(name,age){
//属性继承
SuperType.call(this,name);
this.age=age;
}
//方法继承
SubType.prototype=new SuperType();
SubType.prototype.construcor=SuperType;
SubType.prototype.sayAge=function(){
alert(this.age);
};
原型式继承
基于已有的对象创建新对象,意即将已有的对象赋值给新对象的原型.这是属于对象与对象之间的继承.
寄生式继承
寄生式继承式原型式继承的扩展,寄生式继承可以在返回对象前扩展这个对象(定义更多的属性和方法),这和原型式继承一样,也是对象与对象之间的继承.
缺点:使用寄生式继承为对象添加函数,会由于不能做到函数的复用而降低效率.
var clone=object(original);
clone.sayHi=function(){
alert("hi");
};
return clone;
}
寄生组合式继承
寄生组合式继承是通过借用构造函数来继承属性,通过原型链的混成形式(组合继承和寄生式继承)来继承方法.这样以来,弥补了组合继承和寄生式继承单独存在的缺点。
寄生组合式继承是引用类型最理想的继承范式。
再次明确引用类型?