使用构造函数继承是在子类型中调用父类型的构造函数,其问题是函数无法复用
组合继承将原型链和借用构造函数继承技术组合,使用原型链实现对原型属性和方法的继承,借用构造函数实现对实例属性的继承
原型式继承基于已有的对象创建新对象,同时不必因此创建自定义类型,相当于对已有的对象进行了浅复制,某些属性会被共享
Object.create()函数可用来做原型式继承,第一个参数作为基本对象,第二个参数为新对象定义额外属性,以这种方式指定的任何属性都会覆盖原型对象上的同名属性
寄生式继承是通过调用函创建一个新对象,以某种方式来增强这个对象最后返回这个对象
组合式继承的缺点是无论在什么情况下都会调用两次超类型构造函数,但在调用子类构造函数时会再重写这些属性
寄生式组合继承可以解决这个问题
function inheritPrototype(subType, superType){
var prototype = object(superType.prototype); //创建对象
prototype.constructor = subType;//增强对象
subType.prototype = prototype; //制定对象
}
function SuperType(name){
this.name = name;
this.color = ["red","blue","green"];
}
SuperType.prototype.sayName = function(){
alert(this.name);
};
function SubType(name, age){
superType.call(this, name);
this.age = age;
}
inheritPrototype(SubType, SuperType);
SubType.prototype.sayAge = function(){
alert(this.age);
};
今天累的不行了,就写这么多吧