javascript继承的总结:
JavaScript继承的方式分为:prototype chains,construtor stealing和以上两种方式的合并,prototypal继承,parasitic(寄生)继承,parasitic合并继承等,可能还有其他的,至今没有看到。
1、prototype chains
prototype chains方法是实现继承的主要方式。想要明白这种继承方式,首先来看看对象实例、prototype和constructor三者的关系,当定义一个函数时,会包含一个默认属性prototype,prototype是一个引用类型,在这个属性中包含了constructor,constructor也是一个引用类型,constructor指向了构造函数本身,每个对象实例也包含了一个内部引用类型的对象,指向了prototype对象。
prototype chains继承方式的实现就是利用了prototype这个引用类型,这个引用类型默认是指向了函数定义本身的prototype对象。例如:
function SubType(){
this.property = true;
}
在 SubType中就有一个prototype对象,它默认被赋值了一个对象,该对象的constructor指向了SubType这个构造函数本身。要实现继承,其实就是将prototype指向一个新类型的对象。例如
function SuperType(){
this.sayHi=function(){
alert("Hi!");
}
}
上面是我定义的一个新类型,然后我将SubType的prototype对象指向这个新类型
SubType.prototype=new SuperType();
这样就实现了SubType继承了SuperType,SubType成为了Supertype的一个子类。