Unterschied .base und .prototype
Stefan
- javascript
Hallo zusammen
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?
Viele Grüsse
Stefan
Kann mir jemand erklären, was der Unterschied ist wenn ich die Superklasse eines Objekts so
this.base = Superklasse;
this.base();
so ist es keine Vererbung, sondern einfach nur eine Eigenschaft der Klasse. Mit prototype vererbst du die Eigenschaften.
Struppi.
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