Il est difficile d'expliquer le cas par des mots, laissez-moi vous donner un exemple:
var myObj = {
'name': 'Umut',
'age' : 34
};
var prop = 'name';
var value = 'Onur';
myObj[name] = value; // This does not work
eval('myObj.' + name) = value; //Bad coding ;)
Comment puis-je définir une propriété variable avec une valeur variable dans un objet JavaScript?
javascript
object
properties
set
Umut KIRGÖZ
la source
la source
myObj[prop] = value;
.eval('myObj.'+name)
ne fonctionne pas non plus car la variablename
n'existe pas.var
claviers pour déclarer les variables, utiliser plus de points-virgules, ne pas utilisereval
et accepter plus de réponses. Terminé.myObj[name]
" alors que je suis sûr que vous vouliez écrire "myObj[prop]
".Réponses:
Cela devrait fonctionner. Vous avez confondu le nom de la variable et sa valeur. Mais l'indexation d'un objet avec des chaînes pour obtenir ses propriétés fonctionne bien en JavaScript.
la source
ou
Les deux sont interchangeables.
Edit: Je suppose que vous vouliez dire
myObj[prop] = value
, au lieu de myObj [nom] = valeur. La deuxième syntaxe fonctionne bien: http://jsfiddle.net/waitinforatrain/dNjvb/1/la source
name
là où vous devriez avoirprop
Vous pouvez obtenir la propriété de la même manière que vous la définissez.
Vous définissez la valeur
foo["bar"] = "baz";
Pour obtenir la valeur
foo["bar"]
retournera "baz".
la source
Vous pouvez également créer quelque chose qui serait similaire à un objet de valeur (vo);
SomeModelClassNameVO.js;
Que vous pouvez simplement faire;
la source
Lorsque vous créez un objet
myObj
comme vous l'avez fait, pensez-y plutôt comme un dictionnaire. Dans ce cas, il possède deux touchesname
, etage
.Vous pouvez accéder à ces dictionnaires de deux manières:
myObj[name]
); oumyObj.name
); notez que certaines propriétés sont réservées, donc la première méthode est préférée.Vous devriez pouvoir y accéder en tant que propriété sans aucun problème. Cependant, pour y accéder en tant que tableau, vous devrez traiter la clé comme une chaîne.
Sinon, javascript supposera qu'il
name
s'agit d'une variable, et comme vous n'avez pas créé de variable appeléename
, il ne pourra pas accéder à la clé que vous attendez.la source
myObj[name]
etmyObj.name
cependant, car le premier fait référence à un nom de variable et le second à une clé littérale.aussi simple que ça
myObj.name = value;
la source