js创建对象之工厂模式

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对象,每次调用这个对象它都会返回一个包含两个属性和一个方法的对象。工厂模式解决了创建多个相似对象的问题,但却没有解决对象识别的问题(即怎么知道一个对象的类型)。下节讲的构造函数模式就解决了这个问题。

你可能感兴趣的:(js创建对象之工厂模式)