Hi,
Jede Klasse besitzt ein
prototype-Objekt. Diesem können Eigenschaften und Methoden zugewiesen, die für alle Instanzen gelten.
So kann zum Beispiel für eine Klasse
Kreis einmal die Methode
berechneUmfang definiert und dem
prototype-Objekt zugewiesen werden. Nach der Initialisierung hat jede Instanz/jedes Objekt Zugriff darauf.
Vorteil:
Es kann eine Art Schablone im Speicher abgelegt werden, auf die jede Instanz/jedes Objekt der Klasse zugreifen kann. Im anderen Fall würde die Methode für jede Instanz/jedes Objekt neu angelegt werden und würde auch entsprechend mehr Speicherbedarf und internen Verwaltungsaufwand bedeuten.
Ein weiterer Vorteil ist, dass ein Objekt Eigenschaften erben kann, nachdem es erzeugt wurde, indem sie seinem
Prototyp zugefügt werden.
So kann eine Art Vererbung in JavaScript realisiert werden:
Code:
// Basisobjekt
function myClass(){
this.attr = "Wert a";
}
myClass.prototype.getAttr = function(){
alert(this.attr);
}
// Unterklasse
function mySubClass(){
this.attr = this.attr + " - Wert b";
}
// Vererbung
mySubClass.prototype = new myClass();
// Ausgabe: Wert a
(new myClass()).getAttr();
// Ausgabe: Wert a - Wert b
(new mySubClass()).getAttr();
Im Beispiel wird dem Prototyp der Unterklasse (
mySubClass) eine Instanz der Basisklasse zugewiesen. Anschliessend besitzen Instanzen/Objekte der Unterklassen ebenfalls die Methode
getAttr.
Ich hoffe, das hilft dir weiter.
Ciao
Quaese