MichaelR: +OBJEKTE + Definieren von Methoden

Beitrag lesen

Hi,

emmmmmmmm - verwirrt ....

Nur wenn du mit dem Prototyp arbeitest. Die Funktionsdefinition ist erstmal nur eine Vorlage. Mit der Konstruktormethode new wird ein generisches Objekt erzeugt, dass dann anhand dieser Vorlage um Eigenschaften und Methoden erweitert wird. Innerhalb dieser Vorlage kannst du auf dieses neue Objekt über this zugreifen.
Wenn du aber in deiner Vorlage keine Zuweisungen vornimmst und einen Prototypen hast der um Eigenschaften und Methoden erweitert wurde, dann wird das Objekt nicht um diese Eigenschaften und Methoden erweitert, sondern es hat einen prototypischen Verweis auf den Prototypen, der wiederum diese Eigenschaften und Methoden hat.

und werden - wie Du schreibst - mit

Obj.method = funktion;

angehängt.
Somit hat jedes neues Objekt beim Erzeugen bereits alle Funktionen dabei.

Nein, hier weist du der Instanz (generisches Objekt) die Methode "Irgendwas" zu. Es ist hier nur die entspr. Instanz betroffen.

Also die Funktion, die für das Erzeugen des Objekts zuständig ist, sieht in etwa so aus:

function NewObject(id){
// properties:
this.name = id;
this.left = 0;
this.top = 0;
[etc.]

// methods:
this.function1 = ObjFunction1;
this.function2 = ObjFunction2;
[etc.]
}

nach dem Laden der Seite wird jetzt eine bestimmte Anzahl solcher Objekte erzeugt.

D = new Array();

function Startup(){
for(var i=0; i<10; i++){
D[i] = new NewObject(i+'id');
D[i].left = 50;
[etc.]
}
}

Mit diesem Vorgehen hat doch zunächst einmal das abstrakte Objekt die Methoden und beim Erzeugen der einzelnen Instanzen bekommen diese die dann ebenfalls mit überreicht ?
Oder denk ich da falsch ?

Bei dem Prototype dachte ich eigentlich bisher, dass er sich besonders gut eignet, wenn ich für bereits vorhandene Instanzen neue Methoden anfügen will, d.h. mittels prototype bekommt das *abstrakte* Objekt die neue Methode und damit wird sie dann aucht automatisch an alle bereits erzeugten Instanzen weitergereicht ???

Grüße
Michael