码迷,mamicode.com
首页 > 编程语言 > 详细

《JavaScript高级程序设计》6.2 创建对象

时间:2015-11-07 17:35:14      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:

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

 

《JavaScript高级程序设计》6.2 创建对象

标签:

原文地址:http://www.cnblogs.com/callmegongchenglion/p/4945685.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!