function ClassX(){
this.messageX = "This is the X message. ";
if(typeof ClassX._initialized == "undefined"){
ClassX.prototype.sayMessageX = function(){
alert(this.messageX);
};
ClassX._initialized = true;
}
}
function ClassY(){
this.messageY = "This is the Y message. ";
if(typeof ClassY._initialized == "undefined"){
ClassY.prototype.sayMessageY = function(){
alert(this.messageY);
};
ClassY._initialized = true;
}
}
function ClassZ(){
ClassX.apply(this);
ClassY.apply(this);
this.messageZ = "This is the Z message. ";
if(typeof ClassZ._initialized == "undefined"){
// 使用zinherit工具包中的inheritFrom方法,实现多重继承,inferitFrom只会修改prototype的状态,而不会重新赋值
ClassZ.prototype.inheritFrom(ClassX);
ClassZ.prototype.inheritFrom(ClassY);
ClassZ.prototype.sayMessageZ = function(){
alert(this.messageZ);
};
ClassZ._initialized = true;
}
}
function myload(){
alert("cc");
var objZ = new ClassZ();
objZ.sayMessageX();
objZ.sayMessageY();
objZ.sayMessageZ();
}
zinherit简单的实现了多重继承,但使用inheritFrom后,objZ instanceof ClassY是无效的代码,因为这种方法根本不使用原型链,当然zinherit提供instanceOf方法来解决这个问题
objZ.instanceOf(ClassY); // return true
但更加复杂的继承操作,zinherit将无法完成,比如:父类的调用,方法重载等,但很明显,zinherit的使用很方便,也很简单
分享到:
相关推荐
zInherit是一种常用的JavaScript继承实现方式,它通过修改对象的`__proto__`属性来实现继承。`__proto__`指向父对象的原型,从而使得子对象能够访问父对象的属性和方法。但是,`__proto__`并不是所有浏览器都支持的...
在这个例子中,`Button`通过`Object.create(Control.prototype)`继承了`Control`的原型,并通过`Control.call(this, id)`调用了父类的构造函数。这样,`Button`实例就可以拥有`Control`的所有属性和方法,同时还能...
在这个“javascript小例子代码”压缩包中,我们很可能会找到一系列便于理解和学习JavaScript基本概念、语法和常见功能的小型示例代码。 首先,让我们探讨JavaScript的基本结构。在JavaScript中,代码通常是放在`...
自己总结的一些Javascript的Demo 1.表格隔行变色_焦点着色(高级) 2.多物体运动(整合) 3.高级运动(微博) 4.缓冲运动(右侧对联) 5.表格隔行变色_焦点着色(高级) 等等 代码不足之处,请多多指教
这个名为"300个JavaScript小例子"的资源包,显然是一份学习JavaScript编程的宝贵资料。它包含了300个独立的JavaScript代码实例,每个例子都代表了一个特定的功能或技巧。通过这些实例,我们可以深入理解JavaScript的...
在这个"javascript智能提示框小例子"中,我们将会探讨如何使用JavaScript创建自定义的提示框,以提供比浏览器默认警告、确认和信息对话框更高级的功能和样式。 在传统的Web开发中,JavaScript内置的`alert()`, `...
zinherit库(<script type="text/javascript" src="zinherit.js">)
在JavaScript中,由于其特殊的原型链机制,我们可以实现多重继承,即一个子类可以继承多个父类的特性。下面我们将详细分析JavaScript如何实现多重继承。 首先,我们需要理解JavaScript的原型链。每个JavaScript对象...
JavaScript例子是一个涵盖源码和工具相关知识的主题,主要聚焦在使用JavaScript进行编程的实际示例上。在这个场景中,"DTree"可能代表一个特定的数据结构或库,如决策树(Decision Tree)或者目录树(Directory Tree...
JavaScript的继承机制主要基于原型链,本文将深入探讨JavaScript的继承与多继承,并通过实例进行分析。 1. **JavaScript继承** - **原理**:JavaScript的继承主要是通过原型链(prototype chain)来实现的。每个...
这个压缩包文件“javascript多种经典例子”很可能是包含了一系列的JavaScript代码示例,用于帮助学习者理解并掌握JavaScript的关键概念和实际应用。 1. **变量与数据类型**: JavaScript 支持动态数据类型,这意味...
本压缩包"300个JavaScript小例子.rar"包含了一系列JavaScript编程实例,旨在帮助初学者和进阶者更好地理解和掌握JavaScript的核心概念与技巧。 1. **基础语法** JavaScript的基础包括变量声明(var、let、const)...
在深入探讨JavaScript的原型继承之前,首先要明确的是JavaScript中并没有类似其他编程语言中的类继承的概念。虽然有传言JavaScript 2.0将加入类继承机制,但考虑到要让所有浏览器支持新特性可能需要很长时间,因此...
Javascript原型继承是一个被说烂掉了的话题,但是自己对于这个问题一直没有彻底理解,今天花了点时间又看了一遍《Javascript模式》中关于原型实现继承的几种方法,下面来一一说明下,在最后我根据自己的理解提出了一...
JavaScript中的继承是面向对象编程的重要概念,它允许一个对象(子对象)获取另一个对象(父对象)的属性和方法,从而实现代码复用和多态性。JavaScript支持多种继承实现方式,包括以下四种: 1. **构造函数继承**...
这个压缩包文件"JavaScript实用例子"显然包含了一系列有助于初学者理解和掌握JavaScript编程技巧的实际示例。现在,我们将深入探讨JavaScript的一些关键知识点。 1. 变量与数据类型: JavaScript支持动态数据类型...
本文将深入探讨 JavaScript 中的继承实现方式,并结合提供的 "zinherit.js" 文件来解析相关知识点。 在 JavaScript 中,继承主要通过原型链(prototype chain)、构造函数继承、组合继承、原型式继承、寄生式继承、...
结合“源码”和“工具”的标签,我们可以理解,封装和继承是构建复杂JavaScript应用程序的基础。例如,你可以创建一个工具库,封装各种实用功能,并通过继承机制提供可扩展性,使开发者可以方便地复用和定制代码。...
JavaScript中的继承是面向对象编程的重要概念,允许子类继承父类的属性和方法。本文将深入探讨JavaScript继承的实现方式,以及其中的问题和解决方案。 首先,我们来看混合方式的实现,这种方式结合了原型链和对象...
JavaScript,一种广泛应用于Web开发的脚本语言,是创建交互式网页和动态应用程序的核心工具。在本文中,我们将深入探讨JavaScript的基本概念、重要性、应用领域以及如何制作一个简单的游戏。 首先,JavaScript并非...