JavaScript le ofrece muchas formas de declarar objetos. Cuando se tiene la mayoría de los datos disponibles en la mano, el más conveniente (en mi opinión) es el siguiente:Sintaxis de declaración de objeto JavaScript - nombres de variable como propiedades
var person = {
name: 'John',
age: 23
}; // "object literal syntax"
Algo extraño de esta sintaxis es que es idéntica a ésta:
var person = {
'name': 'John',
'age': 23
}; // "object literal syntax"
Es decir, puede usar comillas u omitirlas para los nombres de las propiedades.
Al comparar eso al establecimiento de un único funciona la propiedad manera, usted tiene dos opciones:
person.birthday = "January 12"; // "dot syntax"
o
person['birthday'] = "January 12"; // "array syntax"
El "sintaxis punto" sólo funciona cuando el operando de la derecha es la real nombre de la propiedad. Si desea utilizar una variable para el nombre de la propiedad, usted tiene que utilizar "la sintaxis de matrices", es decir:
var prop = "birthday";
person[prop] = "January 12";
Ahora, es posible el uso de una variable para el nombre de la propiedad en el "objeto de sintaxis literal" ? Como no importa si cita los nombres de las propiedades, no parece haber una forma obvia de usar una variable allí. Estoy buscando algo como esto:
var prop = "birthday";
var person = {
name: 'John',
age: 23,
(prop): 'January 12'
};
Aquí estoy usando (prop) como la sintaxis imaginario utilizado para expresar que se trata de una variable y no una cadena literal.
Gracias.
creo que tendrá que atenerse a la sintaxis de matrices .. tal vez eval (+ prop +' = "Enero 12 "') hará el truco, pero no creo que esta sea la solución óptima –
@PhilippeBoissonneault - ¡Ack! Eval * no * es necesario ... no lo use en este contexto. –
Está buscando el equivalente de las variables de variable PHP: '$ foo = bar; $ bar = '123'; echo $$ foo; // en realidad muestra '123'' – Ray