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__`并不是所有浏览器都支持的...
本篇文章将深入探讨JavaScript中实现继承的几种常见方式。 1. 原型链继承 JavaScript的原型(prototype)机制是实现继承的基础。每个函数都有一个prototype属性,这个属性指向一个对象,这个对象的属性和方法可以被...
在这个例子中,`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 继承变得简单 Inherit.js 有助于 JavaScript 的经典样式继承。 它不需要外部依赖,可以与任何 JavaScript 库或框架配合使用。 此外,它可以很好地与现有代码配合使用。 Prototype/Scriptaculous 用户,...
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应用程序的基础。例如,你可以创建一个工具库,封装各种实用功能,并通过继承机制提供可扩展性,使开发者可以方便地复用和定制代码。...