OO的JavaScript并不高深麻烦就麻烦在google出来的国人介绍文章经常罗罗嗦嗦而且之间的说法还各有不同摆在一起就让人看了头大
这里重拾简单主义以一个最简单的例子把OO Javascript说明白
一个颇为精简的例子
//定义Circle类
function Circle(radius)
{
thisr = radius;
}
CirclePI = ;
Circleprototypearea = function( ) {return CirclePI * thisr * thisr;}
//使用Circle类
var c = new Circle();
alert(carea());
只需理解三个关键字:
第一个是function JS世界里类的定义用function 里面的内容是构造函数的内容
第二个是this指针 代表调用这个函数的对象
第三个是prototype 用它来定义成员函数 比较规范和保险
另外还可以写成这样:
function compute_area(){return CirclePI * thisr * thisr;}
Circleprototypearea=compute_area;
继承
//定义
function ChildCircle(radius)
{
thisbase=Circle;
thisbase(radius);
}
ChildCircleprototype=new Circle();
function Circle_max(ab)
{
if (ar > br) return a;
else return b;
}
ChildCirclemax = Circle_max;
//使用
vard = new ChildCircle();
var bigger = dmax(cd);
alert(biggerarea());
注意两点
定义继承关系 ChildCircleprototype=new Circle(); 其中是占位用的
调用父类构造函数
thisbase=Circle;
thisbase(radius);
var式定义
JS还支持一种var Circle={raidus:PI:}的形式就如CSS的定义
因此Circle还可以定义为
var newCircle=
{
r:
PI:
area: function(){ return thisPI * thisr * thisr;}
};
alert(newCirclearea());
BTW吃饱了撑着可以看看Rails带的OO Javascript库Prototype