【问题标题】:Create empty object or object with null values for already known keys [closed]为已知键创建空对象或具有空值的对象[关闭]
【发布时间】:2016-02-17 00:30:53
【问题描述】:

几天以来我一直在玩 JavaScript 和 AngularJS,但我不确定以下几点:

我正在开发一个示例项目,用户可以在其中创建一辆新车,只需将一些属性存储在 JS 对象中,如下所示:

var car = {
    color: 'black',
    seating: 'leather',
    fuelconsumption: 'moderate'
}

用户可以通过单击添加按钮来创建新车。然后 Angular 会创建一个新的汽车实例,用户可以指定新车的愿望。

但是,我应该创建一个像

这样的空对象吗?
var car = {}

并使用绑定的文本输入添加所需的键,还是我应该做一些不同的事情?

由于新车的属性是先验已知的,因此我还可以创建一个对象,其中包含所需的键和 null 作为它们的值,如下所示:

var car = {
    color: null,
    seating: null,
    fuelconsumption: null
}

哪种方式更可取,例如最佳实践?

【问题讨论】:

    标签: javascript angularjs object


    【解决方案1】:

    这两种方法都可以。我更喜欢使用 {} 创建空对象,然后添加所需的道具,但您可以通过使用值的初始化定义道具来实现:

     var car = {};
    

    var car = { 
        color: null,
        seating: null,
        fuelconsumption: null
    };
    

    就像你做的那样。我不认为有这样做的最佳做法。 但也许这些值应该指向保存此属性的所需数据类型。

    例子:

    var car = { 
        color:"",
        seating: "",
        fuelconsumption: ""
    };
    

    在你的情况下 "" 很好。

    如果使用号码NaN, undefined

    如果使用字符串""

    如果使用对象或数组{} []

    如果使用某种布尔值true/false

    【讨论】:

      【解决方案2】:

      在 Javascript 中,通常不需要将属性初始化为 null。这是因为引用尚未初始化的属性只会无害地返回 undefined,它可以像 null 一样工作。这显然不同于其他一些语言(Java、C++),在这些语言中,必须先声明对象的属性,然后才能以任何方式引用它们。

      我认为在您的情况下可能有意义的是创建一个构造函数来创建 car 对象,因为您可能会创建不止一辆汽车,并且所有可能的汽车对象在您当时都不知道编写代码。因此,您可以像这样创建一个构造函数:

      function Car(color, seating, fuel) {
          this.color = color;
          this.seating = seating;
          this.fuelConsumption = fuel;
      }
      

      然后,您可以像这样创建一个新的 Car 对象:

      var c = new Car('black', 'leather', 'moderate');
      console.log(c.color);   // 'black'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-30
        • 2021-10-12
        • 1970-01-01
        • 2012-12-03
        • 1970-01-01
        • 2021-09-17
        • 2012-03-08
        • 1970-01-01
        相关资源
        最近更新 更多