//组合继承(有时候也较伪经典继承):将原型链和借用构造函数的技术组合到一块
//思路:借用构造函数继承属性、原型链继承方法。避免了借用构造函数的原型方法不可复用,只有构造函数的属性可以复用的弊端
function SuperType(name) {
this.name = name;
this.colors = ["red", "blue"];
}
SuperType.prototype.sayName = function () {
alert(this.name);
}
function SubType(name, age) {
//继承了SuperType2同时还传递了参数
SuperType.call(this, name);
//SuperType2.apply(this, [name]);
this.age = age;
}
SubType.prototype = new SuperType();
SubType.prototype.sayAge = function () {
alert(this.age);
}
var instance1 = new SubType("Tom", "20");
instance1.colors.push("black");
alert(instance1.colors);
instance1.sayName();
instance1.sayAge();
var instance2 = new SubType("Lucy", "25");
alert(instance2.colors);
instance2.sayName();
instance2.sayAge();