2012-10-10 6 views
11

Mögliche Duplizieren:
javascript - dynamic variables
Dynamic Javascript variable namesKann ich dynamische Objektnamen in JavaScript erstellen?

Ich brauche eine Reihe von Objekten auf einer Seite zu erstellen und möchte, dass sie der Reihe nach nennen. Gibt es eine Möglichkeit, dies in JavaScript zu tun?

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

diese Weise kann ich eine unterschiedliche Anzahl von Objekten (abhängig von dem Wert „num“) und dann entsprechend gesetzt ihre Eigenschaften dynamisch erstellen.

Ich kann dies in PHP tun, gibt es eine Möglichkeit, es in JavaScript zu tun?

+0

Vielen Dank für Ihre Hilfe! Ich widerstand der ganzen Idee, eine Reihe von Objekten zu schaffen, hatte das vorher nicht getan. Ich stellte die Frage und dachte, dass es mir helfen würde, einen Dialog zu beginnen, um eine Antwort zu finden. Nachdem ich die Antwort des Arrays erhalten hatte, versuchte ich es und es funktionierte! Tut mir leid, dass ich so langsam daran glaube. –

Antwort

1

Sie können Eigenschaften dieses Objekts erstellen und ändern.

Modified Code:

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

Ich empfehle Ihnen, Array zu verwenden. als

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

Ich weiß, das ist alt, aber das erstellt keinen dynamischen Objektnamen. – Craicerjack

6

Das ist, was Arrays für, ist eine Sammlung von etwas zu halten:

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

Dynamische Variablen ist fast immer eine schlechte Idee.

12

Dies wird nicht empfohlen, aber tut, was Sie versuchen zu tun (wenn Sie in einem Browser und nicht in einer anderen js-Umgebung ausgeführt werden).

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

Dies funktioniert, weil globale Variablen tatsächlich Eigenschaften des Fensterobjekts sind (wenn Sie im Browser ausgeführt werden). Sie können auf Eigenschaften eines Objekts zugreifen, indem Sie entweder Punktnotation (myObject.prop) oder Klammernotation (myObject ['prop']) verwenden. Wenn Sie window ['obj' + i] zuweisen, erstellen Sie eine globale Variable namens 'obj' + i.

Die bessere Option besteht darin, ein Array oder ein übergeordnetes Objekt zum Speichern Ihrer Objekte zu verwenden.

Oder verwenden Sie ein Array wie viele andere Antworten vorschlagen.

+0

ich stimme zu, der obige Code funktioniert. Aber tu es nicht! – Webbies

+0

Ich denke, es ist wichtig, darauf hinzuweisen, dass diese Variablen dann global sind. –