是否可以将动态命名的属性添加到 JavaScript 对象中?

2022-08-29 22:15:44

在JavaScript中,我创建了一个这样的对象:

var data = {
    'PropertyA': 1,
    'PropertyB': 2,
    'PropertyC': 3
};

如果在初始创建对象后未确定属性名称,是否可以在初始创建后向此对象添加更多属性?即

var propName = 'Property' + someUserInput
//imagine someUserInput was 'Z', how can I now add a 'PropertyZ' property to 
//my object?

答案 1

是的。

var data = {
    'PropertyA': 1,
    'PropertyB': 2,
    'PropertyC': 3
};

data["PropertyD"] = 4;

// dialog box with 4 in it
alert(data.PropertyD);
alert(data["PropertyD"]);

答案 2

ES6为胜利!

const b = 'B';
const c = 'C';

const data = {
    a: true,
    [b]: true, // dynamic property
    [`interpolated-${c}`]: true, // dynamic property + interpolation
    [`${b}-${c}`]: true
}

如果你记录,你会得到这个:data

{
  a: true,
  B: true,
  interpolated-C: true,
  B-C: true
}

这利用了新的计算属性语法和模板文本