WEB开发网
开发学院WEB开发Jsp 简单的例子把OO的JavaScript说明白 阅读

简单的例子把OO的JavaScript说明白

 2008-01-05 20:20:07 来源:WEB开发网   
核心提示:OO的javascript并不高深,麻烦就麻烦在Google出来的国人介绍文章经常罗罗嗦嗦,简单的例子把OO的JavaScript说明白,而且之间的说法还各有不同,摆在一起就让人看了头大,语法就如CSS的定义,因此假如Circle只有一个实例,这里重拾简单主义,以一个最简单的例子把OO Javascript说明白
  OO的javascript并不高深,麻烦就麻烦在Google出来的国人介绍文章经常罗罗嗦嗦,而且之间的说法还各有不同,摆在一起就让人看了头大。
  这里重拾简单主义,以一个最简单的例子把OO Javascript说明白。

1.一个颇为精简的例子

  只需理解三个要害字:

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

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

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

//定义Circle类,拥有成员变量r,常量PI和计算面积的成员函数area()
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 compute_area(){return Circle.PI * this.r * this.r;}Circle.prototype.area=compute_area;



2.继续

注重两点

  1.定义继续关系 ChildCircle.prototype=new Circle(0); 其中0是占位用的
  2.调用父类的构造函数
this.base=Circle;
this.base(radius);

//定义ChildCircle子类
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;



//使用ChildCircle子类
var c = new ChildCircle(1);
var d = new ChildCircle(2);
var bigger = d.max(c,d);
alert(bigger.area());



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());


进入讨论组讨论。

Tags:简单 例子 OO

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接