javascript工厂模式和构造函数模式建立对象

1、工厂模式设计模式

工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了建立具体对象的过程(本书后
面还将讨论其余设计模式及其在JavaScript 中的实现)。考虑到在ECMAScript 中没法建立类,开发人员
就发明了一种函数,用函数来封装以特定接口建立对象的细节,以下面的例子所示。函数

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("Nicholas", 29, "Software Engineer");
var person2 = createPerson("Greg", 27, "Doctor");

函数createPerson()可以根据接受的参数来构建一个包含全部必要信息的Person 对象。能够无
数次地调用这个函数,而每次它都会返回一个包含三个属性一个方法的对象。工厂模式虽然解决了建立
多个类似对象的问题,但却没有解决对象识别的问题(即怎样知道一个对象的类型)。随着JavaScript
的发展,又一个新模式出现了。this

2、构造函数模式spa

像Object 和Array 这样
的原生构造函数,在运行时会自动出如今执行环境中。此外,也能够建立自定义的构造函数,从而定义
自定义对象类型的属性和方法。例如,能够使用构造函数模式将前面的例子重写以下。设计

function Person(name, age, job){
    this.name = name;
    this.age = age;
    this.job = job;
    this.sayName = function(){
        alert(this.name);
    };
}
var person1 = new Person("Nicholas", 29, "Software Engineer");
var person2 = new Person("Greg", 27, "Doctor");

在这个例子中,Person()函数取代了createPerson()函数。咱们注意到,Person()中的代码
除了与createPerson()中相同的部分外,还存在如下不一样之处:
. 没有显式地建立对象;
. 直接将属性和方法赋给了this 对象;
. 没有return 语句。code

相关文章
相关标签/搜索