为已知键创建具有空值的空对象或对象

alb*_*ert 5 javascript object angularjs

几天后我正在使用JavaScript和AngularJS,我不确定以下内容:

我正在开发一个示例项目,在该项目中,用户可以使用存储在JS对象中的一些属性来创建新车,如下所示:

var car = {
    color: 'black',
    seating: 'leather',
    fuelconsumption: 'moderate'
}
Run Code Online (Sandbox Code Playgroud)

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

但是,我应该创建一个像空的对象

var car = {}
Run Code Online (Sandbox Code Playgroud)

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

由于新车的属性是先验已知的,我还可以使用所需的键创建一个对象,并将null它们的值设置为:

var car = {
    color: null,
    seating: null,
    fuelconsumption: null
}
Run Code Online (Sandbox Code Playgroud)

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

Ili*_*tov 6

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

 var car = {};
Run Code Online (Sandbox Code Playgroud)

或者

var car = { 
    color: null,
    seating: null,
    fuelconsumption: null
};
Run Code Online (Sandbox Code Playgroud)

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

例子:

var car = { 
    color:"",
    seating: "",
    fuelconsumption: ""
};
Run Code Online (Sandbox Code Playgroud)

在你的情况下,“”很好。

如果使用 number NaN, undefined

如果使用字符串""

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

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


jfr*_*d00 6

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

我认为在你的情况下可能有意义的是创建一个用于创建car对象的构造函数,因为你可能会创建多个汽车,并且在编写代码时不会知道所有可能的汽车对象.所以,你创建一个这样的构造函数:

function Car(color, seating, fuel) {
    this.color = color;
    this.seating = seating;
    this.fuelConsumption = fuel;
}
Run Code Online (Sandbox Code Playgroud)

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

var c = new Car('black', 'leather', 'moderate');
console.log(c.color);   // 'black'
Run Code Online (Sandbox Code Playgroud)