2012-12-31 4 views

Répondre

7

Comme ceci:

var gizmos = {gizmo1: "G1"}; 
var things = {}; 
things[gizmos.gizmo1] = "T1"; 

Il n'y a aucun moyen de le faire comme partie de l'initialiseur d'objet (aka objet "littéral"), vous devez le faire après.

La raison pour laquelle cela fonctionne est qu'en JavaScript, vous pouvez accéder (obtenir ou définir) une propriété sur un objet de deux façons: Soit en utilisant la notation pointée et litérale, par exemple. foo.bar, ou en utilisant une notation entre parenthèses et une chaîne , par ex. foo["bar"]. Dans ce dernier cas, la chaîne n'a pas besoin d'être une chaîne de caractères, elle peut être le résultat de n'importe quelle expression (y compris, dans ce cas, une recherche de propriété sur un autre objet).


Side Note: Si vous changez gizmos.gizmo1 après que vous faites la ligne things[gizmos.gizmo1] = "T1";, il ne changer le nom de la propriété sur things. Il n'y a pas de lien permanent, car la valeur de gizmos.gizmo1 a été utilisée pour déterminer le nom de la propriété au cours de la ligne things[gizmos.gizmo1] = "T1"; (comme dans toute autre expression).

0
var gizmos = {gizmo1: "G1"}; 
var things = {}; 
things[gizmos.gizmo1]="T1"; 
0

Pour obtenir la valeur pour une clé donnée sur un objet ou utiliser object["key"]object.key

Questions connexes