web-dev-qa-db-fra.com

Comment définir un objet Javascript de manière dynamique?

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?

89
Umut KIRGÖZ
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.

137
Matt Greer
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/

41
bcoughlan

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".

5
timw4mail

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);
5
user2122112

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:

  • Comme un tableau (par exemple myObj[name]); ou
  • Comme une propriété (par exemple, myObj.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.

3
NT3RP

aussi simple que cela myObj.name = value;

0
Arturo Martinez