龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

简单的例子把OO的JavaScript说明白[组图]

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
OO的javascript并不高深,麻烦就麻烦在Google出来的国人介绍文章经常罗罗嗦嗦,而且之间的说法还各有不同,摆在一起就让人看了头大。 这里重拾简单主义,以一个最简单的例子把OO Ja
  OO的javascript并不高深,麻烦就麻烦在Google出来的国人介绍文章经常罗罗嗦嗦,而且之间的说法还各有不同,摆在一起就让人看了头大。
     这里重拾简单主义,以一个最简单的例子把OO Javascript说明白。
  
   1.一个颇为精简的例子
  
   <!-- frame contents -->
<!-- /frame contents -->   只需理解三个要害字:

     第一个是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());


进入讨论组讨论。

  
精彩图集

赞助商链接