简单对象与工厂与构造函数的比较

有三种在JavaScript中创建对象的方法:

  • 通过简单的对象创建
  • 由工厂功能
  • 通过构造函数

  • 简单的对象创建:

    var ronaldo = {
        name: "Ronaldo",
        age: "35",
        quote: "Hi I am Ronaldo", 
        salary: function(x){ return x+2500; }
    };
    
  • 工厂功能:

    function human(x,y,z,i){
        return{
            name: x,
            age: y,
            quote: z,
            salary: function(i){ return i+2500; }
        }
    };
    var Zini = human('Zenidan','41','I am Zidane',7500);
    
  • 构造函数:

    var human = function(x,y,z,i){
        this.name = x,
        this.age = y,
        this.quote = z, 
        this.salary = function(i){ return i+2500; }
    };
    var Lampd = new human('Frank Lampard','39','I am Frank J Lampard',5500);
    
  • 有人可以提供一个简单的例子说明何时使用这些方法中的哪一种方法来创建对象的简单方法,这样一个天真的人也能理解?

    我浏览了以下链接,但了解它有点复杂:

  • 构造函数与工厂方法
  • 构造函数与工厂函数
  • 对象的创建:构造函数或静态工厂方法
  • 所以我要求一些简单的实际案例。


    对数据使用简单的对象:当你需要的只是一组键/值对。

    在你的简单对象的例子中,你不仅仅有数据: salary方法增加了对象的行为。 如果你最终得到这样的许多对象,性能和可维护性最好只有一个salary方法在所有对象之间共享,而不是每个对象都有自己的salary方法。 在许多对象之间共享方法的一种方法是将方法放在对象的原型上。

    当需要创建一个原型实例的对象时,可以使用构造函数。 这是一个阅读的好地方,但它有点密集:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain

    上面的MDN链接还演示了ECMAScript 2015 class语法,这是构造函数的替代方法。

    更新:请参阅戴夫牛顿关于何时使用工厂的一个很好例子的评论

    链接地址: http://www.djcxy.com/p/30165.html

    上一篇: Simple Object vs. Factory vs. Constructor

    下一篇: Redux reducer / state