美文网首页
js创建对象之工厂模式

js创建对象之工厂模式

作者: 我是小丁 | 来源:发表于2016-05-02 22:08 被阅读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对象,每次调用这个对象它都会返回一个包含两个属性和一个方法的对象。工厂模式解决了创建多个相似对象的问题,但却没有解决对象识别的问题(即怎么知道一个对象的类型)。下节讲的构造函数模式就解决了这个问题。

    相关文章

      网友评论

          本文标题:js创建对象之工厂模式

          本文链接:https://www.haomeiwen.com/subject/jwulrttx.html