Es difícil explicar el caso con palabras, déjame darte un ejemplo:
var myObj = {
'name': 'Umut',
'age' : 34
};
var prop = 'name';
var value = 'Onur';
myObj[name] = value; // This does not work
eval('myObj.' + name) = value; //Bad coding ;)
¿Cómo puedo establecer una propiedad variable con un valor variable en un objeto JavaScript?
javascript
object
properties
set
Umut KIRGÖZ
fuente
fuente

myObj[prop] = value;.eval('myObj.'+name)tampoco funciona porque la variablenameno existe.varteclados para declarar variables, usar más punto y coma, no usarevaly aceptar más respuestas. Hecho.myObj[name]" cuando estoy seguro de que querías escribir "myObj[prop]".Respuestas:
Eso debería funcionar. Mezcló el nombre de la variable y su valor. Pero indexar un objeto con cadenas para obtener sus propiedades funciona bien en JavaScript.
fuente
o
Ambos son intercambiables.
Editar: supongo que te
myObj[prop] = valuerefieres a, en lugar de myObj [nombre] = valor. La segunda sintaxis funciona bien: http://jsfiddle.net/waitinforatrain/dNjvb/1/fuente
namedonde debería tenerpropPuede obtener la propiedad de la misma manera que la configuró.
Tu pones el valor
foo["bar"] = "baz";Para obtener el valor
foo["bar"]devolverá "baz".
fuente
También puede crear algo que sea similar a un objeto de valor (vo);
SomeModelClassNameVO.js;
De lo que puedes hacer;
fuente
Cuando crea un objeto
myObjcomo lo ha hecho, piense en él más como un diccionario. En este caso, tiene dos clavesname, yage.Puede acceder a estos diccionarios de dos formas:
myObj[name]. Ej. ); omyObj.name); tenga en cuenta que algunas propiedades están reservadas, por lo que se prefiere el primer método.Debería poder acceder a él como una propiedad sin ningún problema. Sin embargo, para acceder a él como una matriz, deberá tratar la clave como una cadena.
De lo contrario, javascript asumirá que
namees una variable y, dado que no ha creado una variable llamadaname, no podrá acceder a la clave que espera.fuente
myObj[name]ymyObj.namesin embargo, porque el primero se refiere a un nombre de variable y el segundo a una clave literal.tan simple como esto
myObj.name = value;fuente