2009-12-11 7 views
2

J'ai un tableau de variables. Et je veux qu'une variable soit égale à la précédente. Par exemple:JavaScript Object Notation littérale Pointage variable interne

var myVars = { 
    var1: "test", 
    var2: var1 
}; 

alert(myVars.var2); 

// sortie: var1 n'est pas défini

Toute pensée? Je suis sûr que c'est une sorte de limitation de portée variable. Je voudrais entendre autrement. Merci d'avance.

Répondre

7

Vous ne pouvez pas faire référence au même object literal dans une expression sans utiliser une fonction, je vous recommande d'utiliser la syntaxe équivalente:

var myVars = {}; 

myVars.var1 = "test", 
myVars.var2 = myVars.var1; 
+0

merci parfait. J'ai effectivement eu recours à cette méthode. J'espérais juste que la méthode ci-dessus fonctionnerait. Devinez pas! –

-1
var myVars = { 
    var1: "test", 
    var2: this.var1 
}; 

peut-être?

+3

'this' est lié au contexte de la fonction, n'a rien à voir avec l'instance' myVars' – CMS

1

Ou:

var myVar = "test"; 

var myArr = { 
    var1: myVar, 
    var2: myVar 
} 
+0

J'essaie de garder toutes les variables à l'intérieur d'un seul objet pour des raisons d'espace de nom. Cela ne fonctionne pas dans ma situation. –

+0

Dans ce cas, vous devez enrober toutes les variables nécessaires dans un objet, comme suggéré par CMS. Juste une note que vous pouvez également déclarer le tableau comme objet: var myVars = new Object(); myVars.var1 = "test"; myVars.var2 = myVars.var1; –

+1

Quel tableau? Il n'y a pas de tableaux utilisés ici. –

Questions connexes