`
niuzai
  • 浏览: 68177 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JS实现多重继承

阅读更多
    Class = function(){
	    var classPrototype = arguments[arguments.length - 1] || "";
		for(var i = 0; i < arguments.length - 1 ; i++){
			var superClass = arguments[i];
			if(typeof superClass === "function"){
				superClass = superClass.prototype;
			}
			if(!classPrototype.superClass){
				classPrototype.superClass = {};
			}
			for(var m in superClass){
				if(superClass.hasOwnProperty(m)){
					classPrototype.superClass[m] = superClass[m];
				}else{
					classPrototype[m] = superClass[m];
				}
			}
		}
		var currentClass = function(){
			if(this.initialize){
				this.initialize.call(this , arguments);
			}
		};
		currentClass.prototype = classPrototype;
        return currentClass;
	};

    var A = Class({
		width : "A width",
		getWidth : function(){
			return "A getWidth";
		}
	});
	var B = Class(A,{
		height : "B height",
		getHeight : function(){
			return "B getWidth";
		},
		width : 'B width'
	});

	var C = Class(A, B , {
		width: 'C width',
		size : 'C size',
		getHeight : function(){
			return "C getHeight";
		}
	});

	var b = new B();


	//alert(b.width);
	//alert(b.height);
	//alert(b.superClass.getWidth());

	var c = new C();
	alert(c.superClass.width);
	alert(c.size);
	alert(c.superClass.getHeight());
 
分享到:
评论

相关推荐

    JavaScript实现多重继承的方法分析

    本文实例讲述了JavaScript实现多重继承的方法。分享给大家供大家参考,具体如下: 1. 定义一个空的父类构造函数,然后通过prototype的方式为该父类定义属性和方法 2. 定义一个空的子类的构造函数,然后将子类的原型...

    JavaScript继承机制研究.pdf

    通过原型链,JavaScript可以实现多重继承,这使得JavaScript的继承机制更加灵活和强大。 构造函数方式继承 构造函数方式继承是一种常用的继承机制,它通过在子类的构造函数中调用父类的构造函数来实现继承。这使得...

    multiple.js:Javascript原型继承的多重继承

    在JavaScript中,原型继承是实现面向对象编程的一种方式。...对于`multiple.js-master`这个压缩包,可能包含了实现多重继承的示例代码,通过学习和分析这些代码,可以更深入地理解这一概念并应用于实际项目。

    简单的JS多重继承示例

    ### 知识点详解:简单的JS多重继承示例 #### 1. 引言 JavaScript 作为一种原型式语言,其继承机制与传统的类面向对象语言(如 Java、C++)有所不同。JavaScript 支持单一继承,但通过组合可以实现多重继承的效果。...

    JS:Call方法详解(js_的继承)

    总结起来,`call`方法是JavaScript中一个非常有用的特性,它不仅可以帮助我们借用方法、实现继承,还能实现多重继承等高级功能。了解并掌握`call`方法的使用方式,对于我们编写灵活、高效且易于维护的代码至关重要。

    JavaScript mixin实现多继承的方法详解

    在JavaScript中,由于其本身只支持单继承,即一个对象只能有一个原型,想要实现类似多继承的特性时,通常会采用一种称之为mixin的技术。mixin允许我们将一个对象的方法和属性拷贝到另一个对象上,从而达到类似多继承...

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

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

    JavaScript实现继承的4种方法总结

    实例继承的优点是可以实现多重继承,但缺点是使用instanceof关键字检测,对象并不是父类的实例。 ```javascript var Base = function() { this.level = 1; this.name = "base"; this.toString = function() { ...

    JavaScript中实现继承的三种方式和实例

    在JavaScript中,实现继承主要有三种方式:类式继承、原型式继承以及使用扩充方法实现多重继承。每种继承方式都有其特点和适用场景,下面将详细介绍这三种方式: 1. 类式继承 类式继承是指创建一个子类,让它继承一...

    JS继承笔记.7z

    混入允许将多个对象的行为合并到一个新对象中,常用于模拟多重继承。可以使用`Object.assign()`或类的静态方法实现。 10. Symbol-keyed prototypal继承: 使用ES6的Symbol作为键,可以创建不被常规方式遍历到的...

    inherit.js:一个小型、高效的 Ruby 风格经典和 JavaScript 多重继承库

    JavaScript 继承变得简单 ...允许多重继承(稍后会详细介绍) 使用Base.enhance添加对任何 JavaScript 类的支持 用法 创建一个基本类 var Dog = Base . extend ( ) ; 让我们添加一个实例方法: var Dog = Base .

    利用javascript中的call实现继承

    而`sun`通过类似的方式继承了`suber`和`father2`的属性和方法,实现了多重继承。 然而,需要注意的是,`call`方法不会继承父类的私有变量。在JavaScript中,由于闭包的作用,私有变量只存在于定义它们的函数作用域...

    Polytype:JavaScript和TypeScript的动态多重继承。 没有mixins

    多型· JavaScript和TypeScript的动态多重继承。 没有mixins。 Polytype是一个库,它以简单的语法为JavaScript和TypeScript添加了对动态支持。 “动态”意味着在运行时对基类的更改会立即反映在所有派生类中,就像...

    ancestry.js:另一个 javascript OOP 微框架。 但它是一个非常非常微框架,它支持多重继承以及真正的超级构造函数

    不幸的是,当您想要多重继承或在您的类中调用“超级构造函数”的能力时,这往往会失败。ancestry.js 为您提供了这些功能,并且只有这些功能: Ancestry.inherit(ChildClass, [ParentClass1, ParentClass2, ...], ...

    lozenge:ES6 代理的多重继承

    钻石继承与 ES6 代理。 在撰写本文时仅适用于 Firefox。 $ npm install lozenge 用法 class Worker { help ( ) { console . log ( ` ${ this . name } is helping` ) ; } } class Person { say ( ) { console ...

    JsCall方法详解(js的继承).pdf

    `call`方法还可以用于实现多重继承,就像下面这个例子: ```javascript function Class10() { this.showSub = function(a, b) { alert(a - b); } } function Class11() { this.showAdd = function(a, b) { ...

    ExtJS4中使用mixins实现多继承示例

    在JavaScript的世界里,由于语言设计的原因,传统的面向对象编程中的多继承并不是原生支持的特性。然而,通过一些技巧和框架提供的机制,如ExtJS,我们可以实现类似的效果。本示例将详细介绍如何在ExtJS4中利用...

Global site tag (gtag.js) - Google Analytics