标签:
6.2.1 工厂模式
工厂模式是软件工程领域广为人知的设计模式,这种模式抽象了创建具体对象的过程。在ECMAScript中无法创建类,开发人员另辟蹊径发明了一种函数,用函数来封装以特定接口创建对象的细节。该函数可以创建对象,并通过接收到的参数创建属性,最终返回“生产”好的一个对象,就和工厂运行流程一样,提供“原材料”参数就能返回“成品”对象。
1 function factory(name, age, job){ 2 var o = new Object(); 3 o.name = name; 4 o.age = age; 5 o.job = job; 6 o.sayName = function(){ 7 alert(this.name); 8 }; 9 return o; 10 } 11 var product = factory("Nic", 24, "Web Engineer"); 12 alert(product.age);//24
工厂模式优点:可以多次调用这个函数,解决了创建多个相似对象的问题。
缺点:很难知道一个对象的类型,因为对象的创建过程封装在函数内部,而且也不可能用instanceof一个个试,太麻烦了,typeof返回的都是Object。
6.2.2 构造函数模式
ECMAScript中的构造函数可以用来创建特定类型的对象,比如Object类型、Array类型、Date类型、RegExp类型和Function类型,采用
1 var objectname = new classname(arguments) ; 形式即可创建特定类型的对象。这里我们可以创建自定义的构造函数,从而定义自定义对象类型的属性和方法。
使用构造函数模式将前面工厂模式例子重写如下:
1 function Person(name, age, job){ 2 this.name = name; 3 this.age = age; 4 this.job = job; 5 this.sayName = function(){ 6 alert(this.name); 7 }; 8 } 9 var person1 = new Person("Nic", 36, "Father"); 10 var person2 = new Person("Nick", 26, "Student"); 11 alert(person1.age);//36
标签:
原文地址:http://www.cnblogs.com/callmegongchenglion/p/4945685.html