2009-09-09 7 views

Respuesta

17

La primera clave a se sobrescribirán por el segundo 'a'.

obj.a volverá 2.

Si su nombre clave es un identificador válido Javascript o un número, Javascript le permitirá omite las comillas en los nombres clave. En la práctica, sin embargo, es mejor entrenarse para usar siempre las comillas, para evitar confusiones como esta, y también porque JSON las requiere.

1

No hay ninguna diferencia.

alert([ 
    obj.a, 
    obj['a'] 
].join("\n")); // returns 2 in both cases 
7

No puede - son la misma clave, y ese inicializador creará un objeto con un único elemento 'a' con el valor '2'. Prueba esto:

var obj = {a:1,'a':2}; 

for (var i in obj) 
{ 
    alert(i + '=' + obj[i]); 
} 

Y vas a tener "a = 2' en respuesta

2

Si no está seguro acerca de clave - utilizar iteración

for(var k in obj) 
    alert(k + "=" + obj[k]) 

Cuando se conoce el valor exacto clave. use obj [k]

3

obviamente, 'a' es la cadena de un carácter con una minúscula a como contenido; pero ¿qué esperas que sea la otra clave? si quieres que sea el valor de una variable llamada a, entonces la sintaxis de llaves no te servirá. A diferencia de Python, esta sintaxis supone que las claves son cadenas y las comillas son opcionales.

Habría que hacer algo como esto:

var a = 'givenkey' 
var obj = {} 
obj[a] = 1 
obj['a'] = 2 

Esto crearía un objeto equivalente a:

var obj = {'givenkey':1, 'a':2} 
Cuestiones relacionadas