Il est difficile d'expliquer l'affaire 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 définir une propriété de variable avec une valeur de variable dans un objet JavaScript?
myObj[prop] = value;
Cela devrait fonctionner. Vous avez mélangé le nom de la variable et sa valeur. Mais indexer un objet avec des chaînes pour obtenir ses propriétés fonctionne très bien en JavaScript.
myObj.name=value
ou
myObj['name']=value (Quotes are required)
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/
Vous pouvez obtenir la propriété de la même manière que vous l'avez définie.
foo = {
bar: "value"
}
Vous définissez la valeur foo["bar"] = "baz";
Pour obtenir la valeur foo["bar"]
reviendra "baz".
Vous pouvez également créer quelque chose qui serait similaire à un objet de valeur (vo);
SomeModelClassNameVO.js;
function SomeModelClassNameVO(name,id) {
this.name = name;
this.id = id;
}
Que vous pouvez simplement faire;
var someModelClassNameVO = new someModelClassNameVO('name',1);
console.log(someModelClassNameVO.name);
Lorsque vous créez un objet myObj
comme vous l'avez déjà, pensez-le plutôt à un dictionnaire. Dans ce cas, il a deux clés, name
et age
.
Vous pouvez accéder à ces dictionnaires de deux manières:
myObj[name]
); oumyObj.name
); notez que certaines propriétés sont réservées, la première méthode est donc préférable.Vous devriez pouvoir y accéder comme une propriété sans aucun problème. Cependant, pour y accéder sous forme de tableau, vous devez traiter la clé comme une chaîne.
myObj["name"]
Sinon, javascript supposera que name
est une variable et que vous n'avez pas créé de variable appelée name
, il ne pourra pas accéder à la clé que vous attendez.
aussi simple que cela myObj.name = value;