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 variablename
no existe.var
teclados para declarar variables, usar más punto y coma, no usareval
y 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] = value
refieres a, en lugar de myObj [nombre] = valor. La segunda sintaxis funciona bien: http://jsfiddle.net/waitinforatrain/dNjvb/1/fuente
name
donde debería tenerprop
Puede 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
myObj
como 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
name
es una variable y, dado que no ha creado una variable llamadaname
, no podrá acceder a la clave que espera.fuente
myObj[name]
ymyObj.name
sin 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