JavaScript原形链多继承函数

JavaScript由于对象使用原形继承,原形链只能有一条,所以一般不能实现多继承,就算是多继承,也是把别的构造函数内容拿过来,修改一下context在原来构造函数基础上继续执行,我写了个自认为可以实现多继承的函数
[code]Object.extend = function(destination, source) {
for (var property in source)
destination[property] = source[property];
return destination;
};
Object.prototype.mix=function(sub){
sub.call(this);
var temp=Object.extend({},sub.prototype);
temp.__proto__=this.__proto__;
this.__proto__=temp
}
[/code]
使用:
[code]>>> function test(){this.a=123}
>>> test.prototype.b=345
345
>>> a={}
Object
>>> a.mix(test)
>>> a
Object a=123 b=345
>>> function test2(){this.c=678}
>>> test2.prototype.test3=789
789
>>> a.mix(test2)
>>> a
Object a=123 c=678 test3=789 b=345 [/code]
其中定义了空对象a,后分别继承自test和test2构造函数,都有prototype继承,并且对于原构造函数无侵入影响
[code]
>>> test2.prototype
Object test3=789
>>> test.prototype
Object b=345 [/code]
主要是利用closure封闭住__proto__原原形上级,中间使用temp中转,各位高手看看这样可行吗,我想不出来不使用__proto__实现的方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值