//语法甘露:
var object = //定义小写的object 基本类,用于实现最基础的方法等
{
isA: function(aType) //一个判断类与类之间以及对象与类之间关系的基础方法
{
var self = this;
32
while(self)
{
if (self == aType)
return true;
self = self.Type;
};
return false;
}
};
function Class(aBaseClass, aClassDefine) //创建类的函数,用于声明类及继承关系
{
function class_() //创建类的临时函数壳
{
this.Type = aBaseClass; //我们给每一个类约定一个Type 属性,引用其继承的
类
for(var member in aClassDefine)
this[member] = aClassDefine[member]; //复制类的全部定义到当前创建
的类
};
class_.prototype = aBaseClass;
return new class_();
};
function New(aClass, aParams) //创建对象的函数,用于任意类的对象创建
{
function new_() //创建对象的临时函数壳
{
this.Type = aClass; //我们也给每一个对象约定一个Type 属性,据此可以访问
到对象所属的类
33
if (aClass.Create)
aClass.Create.apply(this, aParams); //我们约定所有类的构造函数都叫Crea
te,这和DELPHI 比较相似
};
new_.prototype = aClass;
return new new_();
};
//语法甘露的应用效果:
var Person = Class(object, //派生至object 基本类
{
Create: function(name, age)
{
this.name = name;
this.age = age;
},
SayHello: function()
{
alert("Hello, I'm " + this.name + ", " + this.age + " years old.");
}
});
var Employee = Class(Person, //派生至Person 类,是不是和一般对象语言很相似?
{
Create: function(name, age, salary)
{
Person.Create.call(this, name, age); //调用基类的构造函数
this.salary = salary;
},
ShowMeTheMoney: function()
34
{
alert(this.name + " $" + this.salary);
}
});
var BillGates = New(Person, ["Bill Gates", 53]);
var SteveJobs = New(Employee, ["Steve Jobs", 53, 1234]);
BillGates.SayHello();
SteveJobs.SayHello();
SteveJobs.ShowMeTheMoney();
var LittleBill = New(BillGates.Type, ["Little Bill", 6]); //根据BillGate 的类型创建
LittleBill
LittleBill.SayHello();
alert(BillGates.isA(Person)); //true
alert(BillGates.isA(Employee)); //false
alert(SteveJobs.isA(Person)); //true
alert(Person.isA(Employee)); //false
alert(Employee.isA(Person)); //true
分享到:
相关推荐
Fiber.js 是来自 Linkedin 的一个轻量级的 JavaScript 对象继承模型。示例代码:// Animal base class var Animal = Fiber.extend(function() { return { // The `init` method serves as the ...
JavaScript 类继承模型的准确测试,该模型模拟真实世界的应用程序行为,旨在提供更好的准确性。 只测试最快和最流行的类系统。 例如:Prototype.js 类的速度大约是 native 的 1%,所以没有理由包含它。 这同样适用...
JavaScript 不包含传统的类继承模型,而是使用 prototypal 原型模型。 虽然这经常被当作是 JavaScript 的缺点被提及,其实基于原型的继承模型比传统的类继承还要强大。实现传统的类继承模型是很简单,但是实现 ...
PDF内容:1.基本类型;2.内置数据类型;3.数据类型实现模型;4.简单数值类型的对象化;5.Prototype继承6. .......
原型是理解继承概念的关键, 我们将会教你如何建立原型, 如何检测一个对象是否是另外一个对象的原型, 及其 JavaScript 的模型与Java 面向对象编程之间的区别。我们同样会向你展示如何检测对象所包含的各种属性的方法...
这篇文章将带您探究JavaScript的一些特性,看看这些特性如何让它如此具有吸引力...灵活的对象模型:JavaScript的对象模型使用一种相对不常见的方式进行继承——称为原型——而不是Java语言中更常见的基于类的对象模型。
主要介绍了JavaScript继承基础讲解,原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承,需要的朋友可以参考下
10.1 JavaScript及浏览器对象模型 10.1.1 navigator对象的使用 10.1.2 window对象的使用 10.1.3 创建定时事件 10.1.4 Frame的使用 10.1.5 location对象 10.1.6 history对象 ...
前言 JavaScript 不包含传统的类继承模型,而是使用 prototypal 原型模型。 虽然这经常被当作是 JavaScript 的缺点被提及,其实基于原型的继承模型比传统的类继承还要强大。实现传统的类继承模型是很简单,但是实现 ...
118行实现的一个简单的Javascript的对象模型 这个文件中定义了类模型中类似于其他面向对象语言中的Object类。 如何新建类 作为基类,类的定义使用 var NewClass = Class.new(); 来进行定义。 通过以上方式定义的类...
不幸的是,这些好想法(比如函数、弱类型、动态对象和一个富有表现力的对象字面量表示法)与那些不好的甚至明显很糟糕的想法(比如基于全局变量的编程模型)混合在了一起。 Java小应用程序(Java applets)失败后,...
文章目录JavaScript的逻辑内存模型一、面向对象的三要素二、JavaScript的逻辑内存模型三、JavaScript的对象与Java的实例四、window对象的内存逻辑...函数的内存逻辑模型七、JavaScript的类继承八、JavaScript的对象与类...
原文链接Objects and Inheritance in Javascript 虽然一些Javascript用户可能永远也不需要知道原型或面向对象语言的性质,但是那些来自传统面向对象的语言的开发者使用的时候会发现JavaScript的继承模型非常的奇怪。...
很多的javascript的继承关系,以及对模型的介绍
《JavaScript:The Good Parts(影印版)》一书中,Crockford深度分析了一堆好的意图和盲目的错误,为你提供了所有JavaScript的地道优良部分的细节,包括:·语法·继承·方法;·对象·数组·风格;·函数·正则表达式...
《JavaScript:The Good Parts(影印版)》一书中,Crockford深度分析了一堆好的意图和盲目的错误,为你提供了所有JavaScript的地道优良部分的细节,包括:·语法·继承·方法;·对象·数组·风格;·函数·正则表达式...
《JavaScript:The Good Parts(影印版)》一书中,Crockford深度分析了一堆好的意图和盲目的错误,为你提供了所有JavaScript的地道优良部分的细节,包括:·语法·继承·方法;·对象·数组·风格;·函数·正则表达式...
示例描述:介绍JavaScript文档对象模型。 5.1.html 使用DOM获取各级别节点。 5.2.html 使用DOM获取body元素。 5.3.html 获取元素的子节点。 5.4.html 改变div的内容。 5.5.html 获取表格第1行。...
4.1.3 面向对象编程:继承 4.1.4 面向对象编程:封装 4.1.5 面向对象编程:多态 4.1.6 基于对象编程 4.2 JavaScript对象的生成 4.2.1 HTML文档结构 4.2.2 DOM框架 4.2.3 顶级对象之间的关系 4.2.4 浏览器载入文档时...