javascript多重继承小例子(zInherit工具)

function ClassX(){

this.messageX = "This is the X message. ";

if(typeof ClassX._initialized == "undefined"){

ClassX.prototype.sayMessageX = function(){

alert(this.messageX);
};

ClassX._initialized = true;
}
}

function ClassY(){

this.messageY = "This is the Y message. ";

if(typeof ClassY._initialized == "undefined"){

ClassY.prototype.sayMessageY = function(){

alert(this.messageY);
};

ClassY._initialized = true;
}
}

function ClassZ(){

ClassX.apply(this);
ClassY.apply(this);
this.messageZ = "This is the Z message. ";

if(typeof ClassZ._initialized == "undefined"){

// 使用zinherit工具包中的inheritFrom方法,实现多重继承,inferitFrom只会修改prototype的状态,而不会重新赋值
ClassZ.prototype.inheritFrom(ClassX);
ClassZ.prototype.inheritFrom(ClassY);

ClassZ.prototype.sayMessageZ = function(){

alert(this.messageZ);
};

ClassZ._initialized = true;
}
}

function myload(){
alert("cc");
var objZ = new ClassZ();
objZ.sayMessageX();
objZ.sayMessageY();
objZ.sayMessageZ();
}



zinherit简单的实现了多重继承,但使用inheritFrom后,objZ instanceof ClassY是无效的代码,因为这种方法根本不使用原型链,当然zinherit提供instanceOf方法来解决这个问题

objZ.instanceOf(ClassY); // return true


但更加复杂的继承操作,zinherit将无法完成,比如:父类的调用,方法重载等,但很明显,zinherit的使用很方便,也很简单
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值