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代码。 为了顺利地使用"悟透JavaScript"这份资料,"下载说明.txt"文件提供了必要的指导。它可能...
【悟透JavaScript】深入解析数据与代码的交互 在编程领域,JavaScript是一种极其重要的脚本语言,它将数据和代码的交互展现得淋漓尽致。JavaScript中的数据和代码是编程的基本元素,它们之间的关系就像物质与能量...
在《悟透JavaScript(精简版)》这本书中,作者李战(leadzen)以独特的视角探讨了编程世界的本质——数据与代码之间的关系。他通过生动的比喻,将数据与代码的关系比作物质与能量的关系,形象地描述了两者之间既...
**悟透JavaScript**这本书深入探讨了编程世界的核心——数据与代码之间的关系。在编程的世界里,一切皆可归结为这两种基本元素:数据与代码。 - **数据**:数据是编程世界的基础,它本身是静态的、稳定的,倾向于...
悟透 JAVASCRIPT 美绘本 插图版
"轻轻松松学用javascript编程" 和 "悟透JavaScript" 这两个主题,旨在帮助初学者和进阶者深入理解和掌握这门语言。 JavaScript的核心概念包括变量、数据类型、操作符、流程控制、函数和对象。变量是存储数据的容器...
"一个月悟透JavaScript"这本书显然旨在帮助读者在短时间内深入理解和掌握这门语言的精髓。JavaScript以其灵活、动态的特性,使得网页交互变得更加丰富和生动。下面,我们将根据书名和描述,探讨JavaScript的一些关键...
通过将数据和代码视为不可分割的整体,我们可以更好地设计和编写高效、可维护的JavaScript代码。无论是在前端网页交互、服务器端Node.js开发,还是在移动应用和游戏开发中,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的崇拜者,正想摩拳擦掌地想尝试下学一学这一精巧的语言;也许是80后,90后的程序员或者前端架构师,正被JavaScript魔幻般的魅力所吸引,所困惑,已经徘徊许久……那么本书正是你所...
### 悟透JavaScript——解析数据与代码的交织之美 #### 一、数据与代码的哲学 在编程的世界中,存在两种基本元素:**数据**和**代码**。这两种元素相互作用,共同构建了一个充满生机与活力的世界。数据通常被视为...
《悟透JavaScript》是李战撰写的一本JavaScript教程,它以其独特的讲解方式和生动的语言吸引了众多读者。这本书旨在帮助读者深入理解JavaScript这门强大的编程语言,不仅覆盖了基础概念,还涉及了高级特性,使读者...
在“悟透JavaScript”的描述中,通过类比数据与代码的关系与物质能量之间的关系,强调了JavaScript中对象和类的重要性。神秀和慧能的偈子寓言,形象地展示了面向对象编程的核心思想:对象是数据和行为的统一体,而类...
"悟透JavaScript2015"的主题旨在帮助开发者深入理解2015年时JavaScript的核心概念、语法特性以及应用场景。 在2015年,ECMAScript 6(ES6)或称ES2015正式发布,这是JavaScript历史上的一个里程碑。它引入了一系列...