JavaScript 继承---组合继承

继承---组合继承


组合继承也叫做伪经典继承,指的是将原型链借用构造函数的技术组合到一块,从而发挥二者之长的一种继承模式。


组合继承的基本思路是使用原型链实现对原型属性和和方法的继承,而通过借用构造函数来实现对实例属性的继承。


组合继承通过在原型上定义方法实现了函数复用,又能够保证每个实例都有它自己的属性。如例1所示:


例1:

function aaa(name){
this.name=name;
this.colors=['red','green','blue'];
}
aaa.prototype.getName=function(){
alert(this.name);
}
function bbb(name,age){
aaa.call(this,name);
this.age=age;
}
bbb.prototype=new aaa();
bbb.prototype.constructor=bbb; //更改bbb的原型中的constructor的指向
bbb.prototype.getAge=function(){
alert(this.age);
}
var psn1=new bbb('Nicholas',18);
psn1.colors.push('black');
alert(psn1.colors);
//red,green,blue,black
psn1.getName(); //Nicholas
psn1.getAge(); //18


var psn2=new bbb("Joe",35);
alert(psn2.colors); //red,green,blue
psn2.getAge(); //35
psn2.getName(); //Joe


组合继承避免了原型链和构造函数的缺陷,称为JS中常用的继承模式。而且,instanceof 和isPrototypeOf( )也能够用


于识别基于组合继承创建的对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值