以一个最简单的例子把OO的JavaScript说明白

王朝html/css/js·作者佚名  2008-05-20
宽屏版  字体: |||超大  

OO的JavaScript并不高深,麻烦就麻烦在google出来的国人介绍文章经常罗罗嗦嗦,而且之间的说法还各有不同,摆在一起就让人看了头大。

这里重拾简单主义,以一个最简单的例子把OO Javascript说明白。

1.一个颇为精简的例子//定义Circle类

function Circle(radius)

{

this.r = radius;

}

Circle.PI = 3.14159;

Circle.prototype.area = function( ) {return Circle.PI * this.r * this.r;}

//使用Circle类

var c = new Circle(1.0);

alert(c.area());

只需理解三个关键字:

第一个是function , JS世界里类的定义用"function", 里面的内容是构造函数的内容.

第二个是this指针, 代表调用这个函数的对象

第三个是prototype, 用它来定义成员函数, 比较规范和保险

另外还可以写成这样:

function compute_area(){return Circle.PI * this.r * this.r;}

Circle.prototype.area=compute_area;

2.继承//定义

function ChildCircle(radius)

{

this.base=Circle;

this.base(radius);

}

ChildCircle.prototype=new Circle(0);

function Circle_max(a,b)

{

if (a.r > b.r) return a;

else return b;

}

ChildCircle.max = Circle_max;

//使用

vard = new ChildCircle(2);

var bigger = d.max(c,d);

alert(bigger.area());

注意两点

1.定义继承关系 ChildCircle.prototype=new Circle(0); 其中0是占位用的

2.调用父类构造函数

this.base=Circle;

this.base(radius);

3.var式定义

JS还支持一种var Circle={raidus:1.0,PI:3.1415}的形式,就如CSS的定义

因此Circle还可以定义为

var newCircle=

{

r:1.0,

PI:3.1415,

area: function(){ return this.PI * this.r * this.r;}

};

alert(newCircle.area());

BTW.吃饱了撑着可以看看Rails带的OO Javascript库--Prototype

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有