javascript研究小组

本文介绍了一种在JavaScript中实现多继承的方法,通过自定义mix函数实现了对象的扩展,并且能够保持原有构造函数的独立性,避免了原型链的限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导读:
  JavaScript由于对象使用原形继承,原形链只能有一条,所以一般不能实现多继承,就算是多继承,也是把别的构造函数内容拿过来,修改一下context在原来构造函数基础上继续执行,我写了个自认为可以实现多继承的函数
   代码
  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}
  使用:
   代码
  >>>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
  其中定义了空对象a,后分别继承自test和test2构造函数,都有prototype继承,并且对于原构造函数无侵入影响
   代码
  >>>test2.prototype Object test3=789 >>> test.prototype Object b=345
  主要是利用closure封闭住__proto__原原形上级,中间使用temp中转,各位高手看看这样可行吗,我想不出来不使用__proto__实现的方法

本文转自
http://hzjavaeyer.group.javaeye.com/group/blog/132590
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值