【继承1】寄生组合式继承
<h4>寄生组合式的基本模式</h4>
<pre><code>function inheritPrototype(subType,superType){
var prototype = Object(superType.prototype); //创建对象
prototype.constuctor = subType; //增强对象
subType.prototype = prototype; //指定对象
}</code></pre>
<h4>寄生组合式的使用</h4>
<p>这个例子的高效率体现在它只调用了一次 SuperType 构造函数,并且因此避免了在 SubType. prototype 上面创建不必要的、多余的属性。与此同时,原型链还能保持不变;</p>
<pre><code class="language-javascript">function SuperType(name) {
this.name = name;
this.colors = ["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);
};
</code></pre>
<h4>优点:</h4>
<p>寄生组合式继承:集寄生式继承和组合继承的优点与一身,是实现基于类型继承的有效方式。</p>