Setter Javascript et getter avec clé pour objet

J'ai un objet dans une variable var o={}; Je veux faire quelque chose comme quoi la méthode .push() fait en tableau pour mon objet.

Code JS:

 // Array: var ar=[]; ar.push('omid'); ar.push('F'); var got=ar[1]; // above code is standard but not what I'm looking for ! /*-------------------------------------*/ // Object: var obj={}; /* obj.push('key','value'); // I want do something like this var got2=obj.getVal('key'); // And this */ 

Est-ce possible ?

Puisque Object-Literals utilise un modèle Key->Value , il n'y a pas de méthode JS pour "pousser" une valeur.

Vous pouvez utiliser Dot Notation:

 var Obj = {}; Obj.foo = "bar"; console.log(Obj); 

Or Notation du support:

 var Obj = {}, foo = "foo"; Obj[foo] = "bar"; Obj["bar"] = "foo"; console.log(Obj); 

Pensez à lire https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects , car armer vous-même avec cette connaissance sera précieux à l'avenir.

 var obj = {} // use this if you are hardcoding the key names obj.key = 'value' obj.key // => 'value' // use this if you have strings with the key names in them obj['key2'] = 'value' obj['key2'] // => 'value' // also use the second method if you have keys with odd names obj.! = 'value' // => SyntaxError obj['!'] = 'value' // => OK 

Voici une magie de javascript qui le fait fonctionner. Regarde.

 var obj = {}; Object.defineProperty(obj,'push',{ value:function(x,y){ this[x]=y; } }); obj.push('name','whattttt'); <<<this works!!! obj; //{name:'whattttt'} obj.name or obj['name'].. //whattttt 

La raison pour laquelle j'ai défini la fonction .push en utilisant Object.defineProperty parce que je ne voulais pas qu'elle apparaisse comme une propriété de l'objet. Donc, si vous avez 3 objets dans l'objet, cela aurait toujours été le 4ème. Et gâchez toujours les boucles. Cependant, en utilisant cette méthode. Vous pouvez créer des propriétés cachées mais accessibles.

Bien que je ne sache pas pourquoi vous utiliserez cette méthode s'il existe déjà un moyen simple de le faire.

Pour attribuer une valeur, faites ceci

 obj.variable = 'value'; 

Si la clé de valeur est numérotée ou étrange, procédez comme suit …

 obj[1] = 'yes'; 

Pour accéder au numéro ou au nom étrange, vous faites aussi cela

 obj[1]; 

Et enfin attribuer des clés ou des clés aléatoires qui ont été générées dans un code, pas codé dur, plutôt que d'utiliser ce formulaire aussi.

 var person= 'him'; obj[him]='hello';