javascript继承学习系列之四:组合继承(Combination Inheritance)

本文介绍了一种JavaScript中的继承方式——组合继承,它结合了原型链和对象伪装的优点,通过使用原型链来继承原型上的属性和方法,使用对象伪装来继承实例属性。
    它结合了原型链和对象伪装各自优点的方式。它的基本思路是使用原型链继承原型上的属性和方法,使用对象伪装继承实例属性。通过定义原型方法,允许函数复用,并允许每个实例拥有它们自己的属性。参考以下代码:
function BaseClass(name)
{
   this.name = name;
   this.colors = ["red","blue"];
}
BaseClass.prototype.getName = function(){return this.name;}

function ChildClass(name,age)
{
   // inherit
   BaseClass.call(this,name);
   this.age = age;
}
// inherit
ChildClass.prototype = new BaseClass();

ChildClass.prototype.getAge = function(){return this.age;}

var instance1 = new ChildClass("sds1",28);
var instance2 = new ChildClass("sds2",29);
instance2.colors.push("green");
var instance3 = new ChildClass("sds3",30);

alert(instance1.colors);//red,blue
alert(instance1.getName());//sds1
alert(instance1.getAge());//28

alert(instance2.colors);//red,blue,green
alert(instance2.getName());//sds2
alert(instance2.getAge());//29

alert(instance3.colors);//red,blue
alert(instance3.getName());//sds3
alert(instance3.getAge());//30

     原型链和对象伪装的继承,它们各自有优缺点,并且是互补的,而组合继承正是利用了它们的这种互补性将其结合在一起,比较完美的实现了继承。通过上面的示 例,清楚的看到同时通过组合的方式ChildClass继承了BaseClass类,ChildClass类的三个实例的属性各不影响,且方法都是可复用 的原型方法。
    组合继承的本质还是原型链和对象伪装。

转载于:https://www.cnblogs.com/stephenshen/archive/2011/07/06/2098439.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值