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实现多重继承的方法。分享给大家供大家参考,具体如下: 1. 定义一个空的父类构造函数,然后通过prototype的方式为该父类定义属性和方法 2. 定义一个空的子类的构造函数,然后将子类的原型...
通过原型链,JavaScript可以实现多重继承,这使得JavaScript的继承机制更加灵活和强大。 构造函数方式继承 构造函数方式继承是一种常用的继承机制,它通过在子类的构造函数中调用父类的构造函数来实现继承。这使得...
在JavaScript中,原型继承是实现面向对象编程的一种方式。...对于`multiple.js-master`这个压缩包,可能包含了实现多重继承的示例代码,通过学习和分析这些代码,可以更深入地理解这一概念并应用于实际项目。
### 知识点详解:简单的JS多重继承示例 #### 1. 引言 JavaScript 作为一种原型式语言,其继承机制与传统的类面向对象语言(如 Java、C++)有所不同。JavaScript 支持单一继承,但通过组合可以实现多重继承的效果。...
总结起来,`call`方法是JavaScript中一个非常有用的特性,它不仅可以帮助我们借用方法、实现继承,还能实现多重继承等高级功能。了解并掌握`call`方法的使用方式,对于我们编写灵活、高效且易于维护的代码至关重要。
在JavaScript中,由于其本身只支持单继承,即一个对象只能有一个原型,想要实现类似多继承的特性时,通常会采用一种称之为mixin的技术。mixin允许我们将一个对象的方法和属性拷贝到另一个对象上,从而达到类似多继承...
多重继承是指一个对象可以继承多个父对象的属性和方法,而在JavaScript中可以通过原型链的叠加实现。组合继承则是结合了原型链继承和构造函数继承,以避免某些情况下可能出现的问题。 总的来说,JavaScript的继承...
实例继承的优点是可以实现多重继承,但缺点是使用instanceof关键字检测,对象并不是父类的实例。 ```javascript var Base = function() { this.level = 1; this.name = "base"; this.toString = function() { ...
在JavaScript中,实现继承主要有三种方式:类式继承、原型式继承以及使用扩充方法实现多重继承。每种继承方式都有其特点和适用场景,下面将详细介绍这三种方式: 1. 类式继承 类式继承是指创建一个子类,让它继承一...
混入允许将多个对象的行为合并到一个新对象中,常用于模拟多重继承。可以使用`Object.assign()`或类的静态方法实现。 10. Symbol-keyed prototypal继承: 使用ES6的Symbol作为键,可以创建不被常规方式遍历到的...
JavaScript 继承变得简单 ...允许多重继承(稍后会详细介绍) 使用Base.enhance添加对任何 JavaScript 类的支持 用法 创建一个基本类 var Dog = Base . extend ( ) ; 让我们添加一个实例方法: var Dog = Base .
而`sun`通过类似的方式继承了`suber`和`father2`的属性和方法,实现了多重继承。 然而,需要注意的是,`call`方法不会继承父类的私有变量。在JavaScript中,由于闭包的作用,私有变量只存在于定义它们的函数作用域...
多型· JavaScript和TypeScript的动态多重继承。 没有mixins。 Polytype是一个库,它以简单的语法为JavaScript和TypeScript添加了对动态支持。 “动态”意味着在运行时对基类的更改会立即反映在所有派生类中,就像...
不幸的是,当您想要多重继承或在您的类中调用“超级构造函数”的能力时,这往往会失败。ancestry.js 为您提供了这些功能,并且只有这些功能: Ancestry.inherit(ChildClass, [ParentClass1, ParentClass2, ...], ...
钻石继承与 ES6 代理。 在撰写本文时仅适用于 Firefox。 $ npm install lozenge 用法 class Worker { help ( ) { console . log ( ` ${ this . name } is helping` ) ; } } class Person { say ( ) { console ...
`call`方法还可以用于实现多重继承,就像下面这个例子: ```javascript function Class10() { this.showSub = function(a, b) { alert(a - b); } } function Class11() { this.showAdd = function(a, b) { ...
在JavaScript的世界里,由于语言设计的原因,传统的面向对象编程中的多继承并不是原生支持的特性。然而,通过一些技巧和框架提供的机制,如ExtJS,我们可以实现类似的效果。本示例将详细介绍如何在ExtJS4中利用...