JavaScript 高程设计阅读手记---继承
这里主要记录一个继承模式 -- 寄生组合继承
这个模式核心是通过一个对象拷贝来实现继承
function inheritPrototype(subType, superType){ var obj = Object(superType.prototype); //创建继承对象 obj.constructor = subType; //增强对象 subType.prototype = obj; // 指定对象 } function SuperType(name){ this.name = name; this.colors = ["red", "blue", "green"]; } SuperType.prototype.sayName = function(){ console.log(this.name); }; function SubType(name, age){ SuperType.call(this, name); this.age = age; } inheritPrototype(SubType, SuperType); SubType.prototype.sayAge = function(){ alert(this.age); };
new SubType('wang', 22).sayName() // 'wang'
这里重点说一下 constructor 的作用,其实是在创建新的对象obj 的时候,为这个对象创建原型对象 prototype object,上例如果不指定 constructor 的话,obj 的 constructor 会指向 obj 自身的,而不是我们希望的 subType 函数,这样会导致subType 的 prototype 的不到正确的引用