1.定义类(对象模版)

动态原型方法

示例:

function Car(sColor,iDoors,iMpg) {
  this.color = sColor;
  this.doors = iDoors;
  this.mpg = iMpg;
  this.drivers = new Array("Mike","John");
  
  if (typeof Car._initialized == "undefined") {
    Car.prototype.showColor = function() {
      alert(this.color);
    };
	
    Car._initialized = true;
  }
}

 

直到检查 typeof Car._initialized 是否等于 "undefined" 之前,这个构造函数都未发生变化。这行代码是动态原型方法中最重要的部分。如果这个值未定义,构造函数将用原型方式继续定义对象的方法,然后把 Car._initialized 设置为 true。如果这个值定义了(它的值为 true 时,typeof 的值为 Boolean),那么就不再创建该方法。简而言之,该方法使用标志(_initialized)来判断是否已给原型赋予了任何方法。该方法只创建并赋值一次,传统的 OOP 开发者会高兴地发现,这段代码看起来更像其他语言中的类定义了。

 

 

2.声明和实例化

 

对象的创建方式是用关键字 new 后面跟上实例化的类的名字:

var oObject = new Object();
var oStringObject = new String();

第一行代码创建了 Object 类的一个实例,并把它存储到变量 oObject 中。第二行代码创建了 String 类的一个实例,把它存储在变量 oStringObject 中。如果构造函数无参数,括号则不是必需的。因此可以采用下面的形式重写上面的两行代码:

var oObject = new Object;
var oStringObject = new String;

 

3.调用

var car = new Car('red','2door','3');
alert(car.doors);
car.showColor();

 

4.完整示例

 

 1 <html>
 2 <body>
 3 
 4 <script type="text/javascript">
 5 function Car(sColor,iDoors,iMpg) {
 6   this.color = sColor;
 7   this.doors = iDoors;
 8   this.mpg = iMpg;
 9   this.drivers = new Array("Mike","John");
10   
11   if (typeof Car._initialized == "undefined") {
12     Car.prototype.showColor = function() {
13       alert(this.color);
14     };
15     
16     Car._initialized = true;
17   }
18 }
19 
20 var car = new Car('red','2door','3');
21 alert(car.doors);
22 car.showColor();
23 
24 
25 </script>
26 
27 </body>
28 </html>

 


 

posted on 2012-07-15 23:10  Cloud Lee  阅读(377)  评论(0编辑  收藏  举报