您的位置:首页 > Web前端 > JavaScript

JavaScript:面向对象编程的模拟实现方法(三)

2010-10-07 18:02 731 查看
之前学习了JavaScript中模拟类和继承的多种方法,以及在选择模拟类和继承的方法时需要考虑的因素,接下来就该是具体的应用了。本篇是构建了一个简单的framework,为模拟类和继承提供了一个简单,易于理解的方式。

sfjsoo

这个框架的名字叫做sfjsoo,全名是Simple
Framework for JavaScript Object Oriented
Programming。这个框架的工作很简单,就是依据本系列的第二篇最终推荐的类的模拟方式和继承方式来构建类,而接受的参数就是下面的例子中的那种简单形式。有兴趣的可以看看。

东西放在下面这个url中了。
http://code.google.com/p/sfjsoo/
sfjsoo

的使用方法

使用sfjsoo来构建类能简单到什么程度呢,多说无益,还是直接看sample code吧。

Class.create({
Namesapce : "a.b.c.d.ClassB",
Extends : a.b.c.ClassA,
Constructor : function() {},
Fields :
{
field1 : 34,
field2 : null
},
Methods :
{
method1 : function() {},
method2 : function() {}
},
Statics :
{
MEMBER : 23,
METHOD : function() {}
}
});


按照以上的这种方式来模拟类的话,所有相关的项都是一目了然。跟我们平时写的Java/C++代码有很大的相似度,理解上的难度会降低很多。

上面的sample code已经给我们提供了写类的每个项的方式。其中

NameSpace:指代类的全名,也就是namespace(或者说package)+点+类名,must项;

Extends:指该类的父类,optional项;

Constructor:指类的构造函数,必须是function,optional项;

Fields:类的各个field,值不能是function,optional项;

Methods:类的各个function,值必须是function,optional项;

Statics:类的静态变量和静态方法,optional项。

另外,框架中还给每个类提供了调用父类的构造函数的方式,类似于Java中的super方法,在构造函数中调用。代码其实很简单,通过this调用Super函数就可以了,父类的构造函数有什么参数,也是可以在这里传递的。

this.Super();


其他的sample code

1. http://code.google.com/p/sfjsoo/source/browse/trunk/test/sample.js
2. http://code.google.com/p/sfjsoo/source/browse/trunk/test/test.js
参考资料:

1. A Base Class for JavaScript Inheritance
http://dean.edwards.name/weblog/2006/03/base/
2. Source code of Base.js:
http://dean.edwards.name/base/Base.js
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: