简单对象vs.工厂vs.构造函数-实例

Simple Object vs. Factory vs. Constructor - Practical Example

本文关键字:vs 实例 构造函数 工厂 单对象 简单      更新时间:2023-09-26

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

  1. 通过简单的对象创建
  2. 按工厂功能
  3. 按构造函数函数

  1. 简单对象创建:

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

    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);
    
  3. 构造函数功能:

    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);
    

有人能提供简单的插图,说明何时使用这些方法中的哪一种来简单地创建对象,这样天真的人也能理解吗?

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

  • 建设者与工厂方法
  • 构造函数与工厂函数
  • 对象的创建:构件或静态Factory方法

所以我想问一些简单的实际案例。

对数据使用简单对象:当您只需要一束键/值对时。

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

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

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

更新:关于何时使用工厂的好例子,请参阅Dave Newton的评论