Hallo,
Kann mir jemand erklären, was der Unterschied ist wenn ich die Superklasse eines Objekts so
this.base = Superklasse;
this.base();anstatt mit der .prototype Eigenschaft setze?
Wahrscheinlich ist damit beabsichtigt, dass nur diese Instanz (this) vom Superklassen-Konstruktor Eigenschaften und Methoden zugewiesen bekommt, nicht alle Instanzen des Konstruktors, von dem this abstammt.
Genauer gesagt wird der Konstruktor »Superklasse« durch das Anhängen an die Instanz einfach im Kontext der Instanz ausgeführt.
function Super () {
this.eigenschaft = "möp";
}
function Sub () {
...
}
var instanz1 = new Sub();
var instanz2 = new Sub();
instanz1.base = Super; instanz1.base();
// Jetzt hat instanz1 »eigenschaft«
alert(instanz1.eigenschaft);
// instanz2 aber nicht
alert(instanz2.eigenschaft);
Prototypische Vererbung wäre:
Sub.prototype = new Super();
// dann hätten alle Instanzen die Eigenschaft
alert(instanz1.eigenschaft + "\n" + instanz2.eigenschaft);
Mathias