当前位置:首页 > 开发 > Web前端 > JavaScript > 正文

JS面向对象设计的最佳模式(动态原型方法)

发表于: 2012-07-10   作者:cloudlee8   来源:转载   浏览次数:
摘要: 1.定义类(对象模版) 动态原型方法 示例: function Car(sColor,iDoors,iMpg) { this.color = sColor; this.doors = iDoors; this.mpg = iMpg; this.drivers = new Array("Mike","John"); i

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.完整示例

 

<html>
<body>

<script type="text/javascript">
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;
  }
}

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


</script>
<a href="http://cloud8.iteye.com/">Don't Click.</a>
</body>
</html>

 

 

 

 

JS面向对象设计的最佳模式(动态原型方法)

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
何为原型模式? 原型模式是一种非常简单的设计模式。客户端知道抽象Prototype类。在运行时,抽象Pro
本文参考:js高级程序设计 第三版 这篇文章我啃了大半天写的,是很烦,没有毅力看下去的注定还是不
设计模式-原型模式 效果: 原型模式,其实就是完整的复制一个对象,以一个对象为样本,进行复制作业,然
前言 点击查看:设计模式系列 原型模式(Prototype) 理解:原型模式属于创建型模式,与工厂,单件
定义:用原型示例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 原型模式其实就是从一个对
原型模式(Prototype),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。   下图
当你频繁需要创建同类或者相似的对象实例的时候可以使用原型设计模式。原型设计模式就是克隆一个对
http://zz563143188.iteye.com/blog/1847029 原型模式(Prototype) 原型模式虽然是创建型的模式,但
http://zz563143188.iteye.com/blog/1847029 原型模式(Prototype) 原型模式虽然是创建型的模式,但
引子   古人云:书非借不能读也。    现在 IT 书籍更新快、价格贵、质量水平更是参差不齐,实
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号