`
afcn0
  • 浏览: 9192 次
  • 性别: Icon_minigender_1
  • 来自: 天津
文章分类
社区版块
存档分类
最新评论

JavaScript原形链多继承函数

阅读更多
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__实现的方法
分享到:
评论
2 楼 nullspace 2012-06-24  
怎么实现交互执行javascipt语句的?在什么环境下?
1 楼 ajaxgo 2007-10-17  
虽然,有些方法可以实现多继承(dojo做到了,但我没具体看它的代码)。但是,大家都知道多继承的坏处,像c++这种传统的OO语言,都没能很好控制多继承,而像java,c#都已经舍弃了多继承,那我们为什么还要转而让js来模拟多继承呢?单继承多接口不是更加合理?且更加容易实现,也不会说不符合大多数程序员的习惯。

相关推荐

    javascript指南和函数式编程

    而《JavaScript函数式.zip》可能是一份关于JavaScript函数式编程的资料集合,函数式编程是一种编程范式,强调使用函数和避免改变状态。其中可能涵盖以下知识点: 1. **纯函数**:理解纯函数的定义,即给定相同的...

    JavaScript函数式编程.pdf

    在JavaScript函数式编程中,组合函数可以将多个小的、单一功能的函数串联起来,形成强大的函数链。组合使得代码更加模块化和可重用。 8. 函数式编程实践 实践函数式编程时,可以使用一些流行的库和工具,如Ramda、...

    JavaScript继承与多继承实例分析.docx

    JavaScript的继承机制主要基于原型链,本文将深入探讨JavaScript的继承与多继承,并通过实例进行分析。 1. **JavaScript继承** - **原理**:JavaScript的继承主要是通过原型链(prototype chain)来实现的。每个...

    JavaScript 轻量级函数式编程

    JavaScript 轻量级函数式编程 JavaScript 轻量级函数式编程

    深入理解javascript原型链和继承

    在深入理解JavaScript原型链和继承的概念之前,首先要了解JavaScript是一种基于对象的语言,而非传统的面向对象语言。它没有类的概念,函数可以被视为构造器,而对象则是通过构造函数、原型对象和实例之间的特殊关系...

    C#与JAVASCRIPT函数的相互调用 C#调用JAVASCRIPT函数的调用 JAVASCRIPT调用C#函数的调用

    C#与JAVASCRIPT函数的相互调用 C#调用JAVASCRIPT函数的调用 JAVASCRIPT调用C#函数的调用

    学习javascript面向对象 javascript实现继承的方式

    在JavaScript中,面向对象编程是通过构造函数、原型链和继承实现的。继承是面向对象编程的核心概念之一,它允许我们创建一个新对象,该对象继承现有对象的属性和方法。在JavaScript中,实现继承有多种方式,每种方式...

    JavaScript函数(源代码)

    JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)...

    Javascript 设计模式之构造函数模式.zip

    总结,JavaScript的构造函数模式是创建对象的主要方式之一,它结合原型和原型链提供了面向对象编程的基础。理解并掌握这一模式有助于编写可维护、可扩展的代码。在实际开发中,构造函数模式常常与其他设计模式(如...

    JavaScript继承详解.doc

    JavaScript中的继承是面向对象编程的重要概念,它允许一个对象(子对象)获取另一个对象(父对象)的属性和方法,从而实现代码复用和多态性。JavaScript支持多种继承实现方式,包括以下四种: 1. **构造函数继承**...

    JavaScript继承机制研究.pdf

    在本文中,我们将深入探讨JavaScript继承机制的实现方式,并对基于原型的继承、构造函数方式继承、组合继承、寄生式继承等继承机制进行了总结归纳和分析。 基于原型的继承 JavaScript是一门基于原型的语言,它不像...

    JavaScript之函数(ppt)

    JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数...

    JavaScript字符串函数大全

    JavaScript字符串函数大全 JS自带函数 JavaScript字符串函数大全 JS自带函数

    【JavaScript源代码】简单谈谈JavaScript寄生式组合继承.docx

    通过上述分析可以看出,寄生式组合继承是一种非常灵活且高效的继承方式,它不仅避免了原型链继承和构造函数继承各自的缺点,还充分利用了它们的优点。在实际开发中,合理利用这种继承模式能够帮助我们构建更加健壮...

    JavaScript继承的特性与实践应用深入详解

    多重继承是指一个对象可以继承多个父对象的属性和方法,而在JavaScript中可以通过原型链的叠加实现。组合继承则是结合了原型链继承和构造函数继承,以避免某些情况下可能出现的问题。 总的来说,JavaScript的继承...

    深入解析 JavaScript 中的高阶函数与函数式编程技巧

    除此之外,还涉及到了原型链继承(Cat 类的定义)、Generator 迭代器提供一种新的流程控制手段、以及代理对象 Proxy 和反射机制 Reflect 增强了数据的访问控制能力。每个知识点都给出了具体的例子进行阐述。 适合...

    探索JavaScript的原型链:原型继承的奥秘

    ### 探索JavaScript的原型链:原型继承的奥秘 #### 一、JavaScript与原型继承的基础 JavaScript(简称JS)是一种广泛使用的高级编程语言,在Web开发中占据着核心地位。它的特性之一是基于原型的继承机制,这与其他...

Global site tag (gtag.js) - Google Analytics