molily: Zugriff auf alle Elemente einer eigenen Klasse

Beitrag lesen

jetzt würde ich gerne so auf die Instanzen zugreifen:

alert(food[0].x);

kann ich so überhaupt so auf die Eigenschaften der einzelnen Instanzen zugreifen? wenn ja wie?

Wenn food ein Array wäre, der die Instanzen enthält, würde das gehen - food ist aber die Konstruktorfunktion.
Wenn du einen Array aller Instanzen haben willst, musst du ihn selbst anlegen und jede Instanz diesem Array hinzufügen. Das kannst du natürlich im Konstruktor machen und den Array könntest du z.B. an der Konstruktorfunktion speichern:

function Food () {
   if (!Food.instances) {
      Food.instances = [ this ];
   } else {
      Food.instances.push(this);
   }
}

var eins = new Food();
var zwei = new Food();
dann sind gefüllt
Food.instances[0] mit eins
Food.instances[1] mit zwei

Strenggenommen ginge auch Food[0], es muss nicht zwingend ein Array sein (ein Array ist auch nur ein Objekt mit Eigenschaften):

function Food () {
   if (typeof Food.length == "undefined") {
      Food.length = 0;
   }
   Food[Food.length] = this;
   Food.length++;
}

Dann ginge Food[0], allerdings halte ich diese Vermischung nicht für guten Code. Verwende besser einen »statischen« Array am Konstruktor oder in einer anderen Variable bzw. Eigenschaft.

Mathias