zoukankan      html  css  js  c++  java
  • javascript工厂模式和构造函数模式创建对象

    一、工厂模式

    工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程(本书后
    面还将讨论其他设计模式及其在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
    的发展,又一个新模式出现了。

    二、构造函数模式

    像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 语句。

  • 相关阅读:
    【程序员日记】快乐的一周嘛(第7期)(财富、快乐、技术)
    zCloud使用技巧:如何使用性能下钻功能分析SQL性能问题
    仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵
    团队一致性的PHP开发环境之Docker
    团队一致性的PHP开发环境之Docker
    团队一致性的PHP开发环境之Docker
    qcow2快照原理
    qcow2快照原理
    qcow2快照原理
    qcow2快照原理
  • 原文地址:https://www.cnblogs.com/wswq/p/6235578.html
Copyright © 2011-2022 走看看