function Class(){
var aDefine = arguments[arguments.length-1];//最后一个参数为类定义
if (!aDefine)//没有参数就返回
{
return;
}
var aBase = arguments.length > 1?arguments[0]:object;//解析基类
function prototype_(){};//构造prototype的临时函数,用于挂接原型链
prototype_.prototype = aBase.prototype;//准备传递prototype
var aPrototype = new prototype_();//建立类要用的prototype
for (var member in aDefine)//复制类定义到当前类的prototype
{
if (member != "Create")//构造函数不用复制
{
aPrototype[member] = aDefine[member];
}
}
//如果有构造函数
if (aDefine.Create)
{
var aType = aDefine.Create;//类型即为该构造函数
}
else{//否则为默认构造函数。
aType = function(){
this.base.apply(this,arguments);
}
}
aType.prototype = aPrototype; //设置类(构造函数)的prototype
aType.Base = aBase; //设置类型关系
aType.prototype.Type = aType; //为本类对象扩展一个Type属性
return aType; //返回构造函数作为类
}
//根类object定义
function object(){};//定义小写的object根类,用于实现最基础的方法等
object.prototype.isA = function(aType){//判断是否属于某类型
var self = this.Type;
while (self)
{
if(self == aType) return true;
self = self.Base;
}
return false;
}
//调用基类构造函数
object.prototype.base = function(){
var Caller = object.prototype.base.caller;
Caller && Caller.Base && Caller.Base.apply(this,arguments);
}
//应用效果
//默认派生自object基本类
var Person = Class({
Create:function(name,age){
this.base();
this.name = name;
this.age = age;
},
sayHello:function(){
alert("Hi,I am " + this.name + ", " + this.age + " years old.");
}
});
//Employee派生自Person
var Employee = Class(Person,{
Create:function(name,age,salary){
this.base(name,age);//调用基类的构造函数
this.salary = salary;
},
showMeTheMoney:function(){
alert(this.name + "'s salary is: $" + this.salary);
}
});
var wml = new Person("Wu Mingli",29);
//wml.sayHello();
//var xyd = new Employee("Xu yedong",28,7500);
//xyd.showMeTheMoney();
var lyp = new wml.Type("Lv yaping",25);
lyp.sayHello();
分享到:
相关推荐
### 悟透JavaScript(js):回归数据与代码的本质 #### 一、引言 《悟透JavaScript》这本书由李战(leadzen)撰写,旨在深入浅出地讲解JavaScript的核心概念和技术要点。本书通过生动有趣的比喻,将抽象的编程概念...
【悟透JavaScript】深入解析数据与代码的交互 在编程领域,JavaScript是一种极其重要的脚本语言,它将数据和代码的交互展现得淋漓尽致。JavaScript中的数据和代码是编程的基本元素,它们之间的关系就像物质与能量...
在《悟透JavaScript(精简版)》这本书中,作者李战(leadzen)以独特的视角探讨了编程世界的本质——数据与代码之间的关系。他通过生动的比喻,将数据与代码的关系比作物质与能量的关系,形象地描述了两者之间既...
**悟透JavaScript**这本书深入探讨了编程世界的核心——数据与代码之间的关系。在编程的世界里,一切皆可归结为这两种基本元素:数据与代码。 - **数据**:数据是编程世界的基础,它本身是静态的、稳定的,倾向于...
悟透 JAVASCRIPT 美绘本 插图版
"轻轻松松学用javascript编程" 和 "悟透JavaScript" 这两个主题,旨在帮助初学者和进阶者深入理解和掌握这门语言。 JavaScript的核心概念包括变量、数据类型、操作符、流程控制、函数和对象。变量是存储数据的容器...
"一个月悟透JavaScript"这本书显然旨在帮助读者在短时间内深入理解和掌握这门语言的精髓。JavaScript以其灵活、动态的特性,使得网页交互变得更加丰富和生动。下面,我们将根据书名和描述,探讨JavaScript的一些关键...
- CommonJS和ES6模块系统让JavaScript代码可以模块化,而npm(Node Package Manager)是JavaScript的包管理器,管理项目依赖和包的版本。 以上知识点仅为JavaScript的一些基础和进阶概念介绍。实际学习过程中需要...
悟透JavaScript.mht,悟透JavaScript.mht,悟透JavaScript.mht,悟透JavaScript.mht,悟透JavaScript.mht
- **代码形式**: JavaScript中的代码主要体现为**function**。函数是执行特定任务的代码块,可以接受输入参数并返回结果。 #### 四、JavaScript中的数据类型 - **typeof操作符**: 用于检测变量的数据类型,返回一...
《悟透JavaScript》是李战撰写的一本JavaScript教程,它以其独特的讲解方式和生动的语言吸引了众多读者。这本书旨在帮助读者深入理解JavaScript这门强大的编程语言,不仅覆盖了基础概念,还涉及了高级特性,使读者...
在“悟透JavaScript”的描述中,通过类比数据与代码的关系与物质能量之间的关系,强调了JavaScript中对象和类的重要性。神秀和慧能的偈子寓言,形象地展示了面向对象编程的核心思想:对象是数据和行为的统一体,而类...
作者用比较简明易懂地介绍了javascript,方法生动,比较有趣,是学习和理解javascript的非常好资料。 原著:李战(leadzen).深圳 2008-2-23 文章整理: www.diybl.com
"悟透JavaScript"这本书籍,显然是为了帮助读者深入理解这一强大的编程工具。JavaScript语法简洁,但功能强大,它允许开发者在用户的浏览器上运行代码,实现网页的实时更新、数据交互以及丰富的用户体验。 ...
悟透JAVASCRIPT.美绘本.pdf
"悟透JAVASCRIPT.zip"这个压缩包文件,从标题来看,旨在帮助学习者深入理解JavaScript的核心概念。描述中提到以漫画形式进行讲解,这为学习过程增添了一种趣味性,使得枯燥的编程知识变得更加生动易懂。对于初学者来...
"悟透JavaScript-李站"这个压缩包文件很可能包含了一系列关于深入理解和精通JavaScript的教程或资料。 在学习JavaScript时,首先要理解其基础语法,包括变量、数据类型(如字符串、数字、布尔值、对象、数组、null...