是否能够向JavaScript对象添加动态命名的属性?

在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楼

是。 ide

var data = { 'PropertyA': 1, 'PropertyB': 2, 'PropertyC': 3 }; data["PropertyD"] = 4; // dialog box with 4 in it alert(data.PropertyD); alert(data["PropertyD"]);


#2楼

对的,这是可能的。 假设: 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]);

#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'
相关文章
相关标签/搜索