2012-10-10 47 views
11

Duplicar posible:
javascript - dynamic variables
Dynamic Javascript variable names¿Puedo crear nombres de objetos dinámicos en JavaScript?

necesito para crear una serie de objetos en una página y desea nombrar en forma secuencial. ¿Hay alguna manera de hacer esto en JavaScript?

for (i=0;i<num;i++){ 
    var obj+i = new myObject("param1","param2"); 
    obj+i.someProperty = value; 
} 

esta manera puedo crear dinámicamente un número variable de objetos (dependiente del valor "num") y luego establecer sus propiedades apropiadamente.

Puedo hacer esto en PHP, ¿hay alguna manera de hacerlo en JavaScript?

+0

¡Gracias por ayudar! Resistí la idea de crear una matriz de objetos, no lo había hecho antes. Hice la pregunta pensando que me ayudaría a comenzar un diálogo para encontrar una respuesta. Después de recibir la respuesta de la matriz nuevamente, lo intenté, ¡y funcionó! Perdón por ser tan lento en creer eso. –

Respuesta

1

Puede crear, y puede establecer/modificar las propiedades de ese objeto.

código de modificación:

var obj = {}; // 
for (i=0;i<num;i++){ 
    obj[i] = new myObject("param1","param2"); 
    obj[i].someProperty = value; 
} 

recomiendo que uses matriz. como

var obj = []; // 
    for (i=0;i<num;i++){ 
     obj[i] = new myObject("param1","param2"); 
     obj[i].someProperty = value; 
    } 
+0

Sé que esto es antiguo, pero esto no crea un nombre de objeto dinámico. – Craicerjack

6

Eso es lo que las matrices son para, para mantener una colección de algo:

var objs = []; 
for (i=0;i<num;i++){ 
    objs[i] = new myObject("param1","param2"); 
    objs[i].someProperty = value; 
} 

Las variables dinámicas son casi siempre una mala idea.

12

Esto no se recomienda, pero hace lo que intenta hacer (si está ejecutando en un navegador y no en otro entorno js).

for (i = 0; i < num; i++) { 
    window['obj' + i] = new myObject("param1","param2"); 
    window['obj' + i].someProperty = value; 
} 
obj0.someProperty; 

Esto funciona porque las variables globales son en realidad propiedades del objeto de ventana (si está ejecutando en el navegador). Puede acceder a las propiedades de un objeto usando notación de puntos (myObject.prop) o notación de corchetes (myObject ['prop']). Al asignar la ventana ['obj' + i], está creando una variable global llamada 'obj' + i.

La mejor opción es usar una matriz u objeto principal para almacenar sus objetos.

myObjs = {}; 
for (i = 0; i < num; i++) { 
    myObjs['obj' + i] = new myObject("param1","param2"); 
    myObjs['obj' + i].someProperty = value; 
} 
myObjs.obj0.someProperty; 

O utilice una matriz como muchas otras respuestas sugieren.

+0

estoy de acuerdo, el código anterior funciona. ¡Pero no lo hagas! – Webbies

+0

Creo que es importante señalar que estas variables serán globales en ese momento. –

Cuestiones relacionadas