接着这篇 http://blog.csdn.net/zgrbsbf/article/details/78643523
混合继承优缺点,就是SuperType的构造函数调用了两次。解决之。
第二次的调用不可避免,我们从第一次入手。
SubType.prototype=new SuperType();
将它替换成
SubType.prototype=Object.create(SuperType.prototype);---------------------------------aa
默认情况下,所有的prototype都会有一个constructor属性,即a.prototype.constructor===a,所以这个时候,
console.log(SuperType.prototype.constructor==SuperType);//true
但是:
console.log(SubType.prototype.constructor==SubType);//false,
这是因为aa式的原因,此时此刻,
console.log(SubType.prototype.constructor==SuperType);//true,这是因为SubType.prototype是一个SuperType实例,有下面的成立,
console.log(SubType.prototype.__proto__==SuperType.prototype);//true
console.log(instance1.constructor==SuperType)//true
可以重新对SubType.prototype赋值,如下
SubType.prototype.constructor==SubType。
然后
console.log(instance1.constructor==SubType)//true