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 的不到正确的引用

posted on 2017-06-08 15:49  bbb324  阅读(108)  评论(0编辑  收藏  举报

导航