2008-10-04 12 views
9

en JavaScript, que tienen un objeto:¿Cómo hago referencia a un objeto dinámicamente?

obj = { one: "foo", two: "bar" }; 

Ahora, quiero que hagas esto

var a = 'two'; 
if(confirm('Do you want One')) 
{ 
    a = 'one'; 
} 

alert(obj.a); 

Pero, por supuesto, no funciona. ¿Cuál sería la forma correcta de hacer referencia a este objeto dinámicamente?

Respuesta

16

respuesta corta: obj[a]

respuesta larga: obj.field es sólo una forma abreviada de obj["field"], para el caso especial donde la clave es una cadena constante y sin espacios, puntos, o otras cosas desagradables En su pregunta, la clave no era una constante, así que simplemente use la sintaxis completa.

2

Como nota al margen, las variables globales están unidos a la "ventana" de objetos, por lo que se puede hacer

var myGlobal = 'hello'; 
var a = 'myGlobal'; 
alert(window[a] + ', ' + window.myGlobal + ', ' + myGlobal); 

Esto alertará "hola, hola, hola"

Cuestiones relacionadas