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