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

转载于:https://www.cnblogs.com/bbb324/p/6963236.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值