2010-02-27 10 views
5

Tengo una pregunta bastante simple (y respuestas tentativas), solo quiero ver si tal vez hay una mejor respuesta.Javascript - miembro de objeto de acceso cuando la cadena de identificador está almacenada en var

¿Cómo se puede acceder a un miembro de objeto en javascript cuando el identificador de miembro se almacena en otra variable? Ejemplo:

state = 'sync'; 

messages = { 
    'sync': 'asdf', 
    'ready': 'asdf', 
    'complete': 'asdf' 
}; 

Posibilidades: 1. Mensaje de = eval('messages.' + state);

    mensaje
  1. a su vez en un hash (en el prototipo o jQuery - no está seguro acerca de jQuery) y el acceso a través el método de la estructura

¿Qué otras formas existen? ¿Algo más limpio? En php, sería simple $message = $messages->$sync.

estoy seguro de que esta pregunta ha sido contestada muchas veces, pero es difícil de buscar ... todo lo que consigo son respuestas eval cuando la búsqueda de '' Variables variables

Gracias

Respuesta

9
var message = messages[state]; 

Cada objeto en JavaScript no es solo un objeto en el sentido más habitual, sino que también es un diccionario poblado por sus miembros.

+0

gracias. no sabía que podría tratar un objeto como un hash. – joshs

+1

Corto y dulce y correcto. Por cierto, Josh, esto funciona independientemente de que los nombres de tus propiedades en el objeto de mensajes estén entre comillas. – Robusto

Cuestiones relacionadas