Hallo,
Ich möchte x Objekte instanzieren und die Instanzen in einem Array sammeln.
Nein, möchtest du nicht. Arrays in JavaScript sind immer numerische Arrays. Was du anscheinend willst, ist ein »Hash«, »Assoziativer Array« oder wie auch immer du es nennen willst. Dazu bietet dir ein JavaScript-Array nichts. Du kannst und solltest dasselbe mit einem generischen Object lösen. Deshalb weisen dich hier alle auf new Object() statt new Array() hin.
Siehe auch http://de.selfhtml.org/javascript/objekte/array.htm#assoziative_arrays.
var arArray <--- das soll das Array sein.
var hash = new Object();
oder in der Kurzschreibweise:
var hash = {};
das ganze würde ich dann in eine Schleife packen und so oft durchlaufen wie ich es eben brauche und dass kann unterschiedlich sein. Um genau zu sein würde es dann heißen arArray["object"+counter] = new Object();
Du solltest einen Konstruktor nicht Object nennen. Aber nehmen wir mal an, das war nur ein Beispiel und er hieße »K«. Ja, dann sollte das gehen:
hash["object" + counter] = new K();
Und ja, das geht auch in einer Schleife:
for (var i = 0; i < 10; i++) {
hash["object" + i] = new K();
}Aber wieso verwendest du dafür keinen stinknormalen Array und schreibst:
var arr = [];
for (var i = 0; i < 10; i++) {
arr.push( new K() );
}arr[5] ist doch sinniger als hash["object5"].
Mathias
:) danke für deine ausführliche Erklärung.
push kann ich nicht verwenden, da ich ja noch drauf zugreifen will. Dann hab ich zwar einen Stack geschaffen, weiß aber nicht mehr wo die Instanz liegt, mit der ich z.B. einen Audi gebaut hab. Deshalb muss der Audi im (assoziativen) ARRAY (:P) arArray["Audi"] liegen, damit ich später wieder drauf zugreifen kann. z.B. So... arArray["Audi"].fahren();
Funktioniert auch super, bloß hab ich jetzt ein neues Problem und ich hab keinen Ansatz das zu lösen :(. Ich mach dafür mal einen neuen Topic auf.
Danke soweit!!
MFG
T-Rex
PS. (grummel woher soll man auch wissen das man in JS für assoziative Array ein Object nehmen soll....grummel....).