JS创建对象的几种模式

1、工厂模式

考虑到javascript无法创建类,开发人员就发明了一种函数,用函数来封装以特定接口创建对象的细节

	    <script type="text/javascript">
	    	function createPerson(name,age,job){
	    		var o = new Object();
	    		o.name = name;
	    		o.age = age;
	    		o.job = job;
	    		o.sayName = function() {
	    			alert(this.name);
				};
				return o;
	    	}
	    	
	    	var person1 = createPerson("zy","21","web devoloper ");
	    	var person2 = createPerson("smirk","21","UI ");
	    	
	    	person1.sayName();
	    	person2.sayName();
	    </script>

  工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题(即怎样知道一个对象的类型)

2、构造函数模式

javascript中的构造函数可用来创建特定类型的对象,可以创建自定义的构造函数,从而定义自定义对象类型的属性和方法。

	    <script type="text/javascript">
	    	function Person(name,age,job){
	    		this.name = name;
	    		this.age = age;
	    		this.job = job;
	    		this.sayName = function(){
	    			alert(this.name);
	    		};
	    	}
	    	
	    	var person1 = new Person("zy","21","web devoloper ");
	    	var person2 =  new Person("smirk","21","UI ");
	    	
	    	person1.sayName();
	    	person2.sayName();

	    </script>

 按照惯例,构造函数始终都应该以一个大写字母开头。

以这种方式调用构造函数实际上会经历一下四个步骤:

 (1)创建一个新对象;

 (2)讲构造函数的作用域赋给新对象

 (3)执行构造函数中的代码(为这个新对象添加属性)

 (4)返回新对象

前面例子的最后,person1和person2分别保存着Person的一个不同的实例,这两个对象都有一个constructor属性,属性指向Person

alert(person1.constructor == Person);

 

posted @ 2012-03-19 21:36  纳爱斯  阅读(240)  评论(0编辑  收藏  举报