js创建对象之工厂模式
2016-05-02 本文已影响229人
我是小丁
1.什么是对象?
ECMA-262把对象定义为:“无序属性的集合,其属性可以包含基本值、对象或者函数。”对象的每个属性或函数都有一个值,我们可以把对象看成一组无序的名值对。
1.对象的创建方法
创建一个简单的对象实例:
var cat=new Object();
cat.name="花花";
cat.age=3;
cat.showName=function(){
alert(this.name);
};
上面的代码创建了一个名为cat的对象,并给它添加了两个属性(name和age)和一个方法(showName)。showName方法用于显示this.name(将被解析为cat.name)的值。这是以前程序员创建对象的一种方法,现在对象字面量成为创建这种对象的首选,前面的例子用对象字面量语法可以这么写:
var cat={
name:"花花",
age:3,
showName:function(){
alert(this.name);
}
};
虽然Object构造函数和对象字面量都可以用来创造单个对象,但是这种方式有一个严重的缺陷,使用同一接口创建多个对象,会产生大量重复代码。为了解决这种问题,人们开始使用对象的创建模式。
2.对象创建之工厂模式
工厂模式是软技领域一种很常用的设计模式,这种模式抽象了对象建立的过程。考虑到js中没有类的概念,开发人员发明了一种函数,用来封装以特定接口创建对象的细节。如下代码:
function createObject(name,age){
var o=new Object();
o.name=name;
o.age=age;
o.showName=function(){
alert(this.name);
};
return o;
}
var cat1=createObject("花花",3);
var cat2=createObject("小黑",4);
函数createObject()可以接受的参数来构建一个含有必要信息的cat对象,每次调用这个对象它都会返回一个包含两个属性和一个方法的对象。工厂模式解决了创建多个相似对象的问题,但却没有解决对象识别的问题(即怎么知道一个对象的类型)。下节讲的构造函数模式就解决了这个问题。