En JavaScript, j'ai créé un objet comme ceci :
var data = {
'PropertyA': 1,
'PropertyB': 2,
'PropertyC': 3
};
Est-il possible d'ajouter d'autres propriétés à cet objet après sa création initiale si le nom des propriétés n'est déterminé qu'au moment de l'exécution ?
var propName = 'Property' + someUserInput
//imagine someUserInput was 'Z', how can I now add a 'PropertyZ' property to
//my object?
Oui.
var data = {
'PropertyA': 1,
'PropertyB': 2,
'PropertyC': 3
};
data["PropertyD"] = 4;
// dialog box with 4 in it
alert(data.PropertyD);
alert(data["PropertyD"]);
Oui, c'est possible. En supposant :
var data = {
'PropertyA': 1,
'PropertyB': 2,
'PropertyC': 3
};
var propertyName = "someProperty";
var propertyValue = "someValue";
Soit :
data[propertyName] = propertyValue;
ou
eval("data." + propertyName + " = '" + propertyValue + "'");
La première méthode est préférable. eval() pose des problèmes de sécurité évidents si vous utilisez des valeurs fournies par l'utilisateur, donc ne l'utilisez pas si vous pouvez l'éviter, mais il vaut la peine de savoir qu'il existe et ce qu'il peut faire.
Vous pouvez y faire référence avec :
alert(data.someProperty);
ou
data(data["someProperty"]);
ou
alert(data[propertyName]);
Vous pouvez ajouter autant de propriétés que vous le souhaitez en utilisant simplement la notation par points :
var data = {
var1:'somevalue'
}
data.newAttribute = 'newvalue'
ou :
data[newattribute] = somevalue
pour les clés dynamiques.