浏览 3670 次
锁定老帖子 主题:JavaScript原形链多继承函数
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-10-16
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__实现的方法 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-10-17
虽然,有些方法可以实现多继承(dojo做到了,但我没具体看它的代码)。但是,大家都知道多继承的坏处,像c++这种传统的OO语言,都没能很好控制多继承,而像java,c#都已经舍弃了多继承,那我们为什么还要转而让js来模拟多继承呢?单继承多接口不是更加合理?且更加容易实现,也不会说不符合大多数程序员的习惯。
|
|
返回顶楼 | |