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);
}
}
var person1 = createPerson("nichilas", 29, "software Engineer");
var person2 = createPerson("Greg",27,"Doctor");
构造函数模式
ECMAScript中的构造函数可以用来创建特定类型的对象。像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("nichilas", 29, "software Engineer");
var person2 = new Person("Greg",27,"Doctor");
在这个例子中,Person()函数取代了createPerson()函数。
他们之间的不同:
没有显示的创建对象;
直接将属性和方法赋给了this对象;
没有return语句
原型模式
使用构造函数的prtotype属性来指定那些应该共享的属性和方法。组合使用构造函数模式和原型模式时,使用构造函数定义实例属性,而使用原型定义共享的属性和方法。