在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?
是。 ide
var data = { 'PropertyA': 1, 'PropertyB': 2, 'PropertyC': 3 }; data["PropertyD"] = 4; // dialog box with 4 in it alert(data.PropertyD); alert(data["PropertyD"]);
对的,这是可能的。 假设: spa
var data = { 'PropertyA': 1, 'PropertyB': 2, 'PropertyC': 3 }; var propertyName = "someProperty"; var propertyValue = "someValue";
要么: code
data[propertyName] = propertyValue;
要么 对象
eval("data." + propertyName + " = '" + propertyValue + "'");
第一种方法是首选。 若是您使用的是用户提供的值,则eval()存在明显的安全问题,所以,若是能够避免使用eval(),则不要使用它,可是值得知道它的存在以及它能够作什么。 ip
您能够经过如下方式引用: it
alert(data.someProperty);
要么 class
data(data["someProperty"]);
要么 object
alert(data[propertyName]);
只需使用点符号便可添加任意多的属性:
var data = { var1:'somevalue' } data.newAttribute = 'newvalue'
或 :
data[newattribute] = somevalue
用于动态键。
绝对是 将其视为字典或关联数组。 您能够随时添加它。
在这里,使用您的符号:
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'