在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楼
对的,这是可能的。 假设:
var data = {
'PropertyA': 1,
'PropertyB': 2,
'PropertyC': 3
};
var propertyName = "someProperty";
var propertyValue = "someValue";
要么:
data[propertyName] = propertyValue;
要么
eval("data." + propertyName + " = '" + propertyValue + "'");
第一种方法是首选。 如果您使用的是用户提供的值,则eval()存在明显的安全问题,因此,如果可以避免使用eval(),则不要使用它,但是值得知道它的存在以及它可以做什么。
您可以通过以下方式引用:
alert(data.someProperty);
要么
data(data["someProperty"]);
要么
alert(data[propertyName]);
#3楼
只需使用点符号即可添加任意多的属性:
var data = {
var1:'somevalue'
}
data.newAttribute = 'newvalue'
或 :
data[newattribute] = somevalue
用于动态键。
#4楼
绝对是 将其视为字典或关联数组。 您可以随时添加它。
#5楼
在这里,使用您的符号:
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?
data[propName] = 'Some New Property value'