是否能夠向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'
相關文章
相關標籤/搜索