Hallo,
ich suche nach einer Vererbungsmethode ohne dabei Function mit Prototype zu modifizieren. Ich bräuchte dabei eine Möglichkeit auf super-Methoden zugreifen zu können, was auch bei Mehrfachvererbung funktionieren soll. Zudem sollen die Konstruktorparameter der Unterklasse an die Superklasse übergeben werden.
Mir gefällt dieses Pattern ganz gut:
John Resig - Simple JavaScript Inheritance
Da weiß ich allerdings nicht, wie ich private Eigenschaften und Methoden hinzufüge. Das wird sogar in den Kommentaren besprochen. Ich krieg es aber irgendwie nicht hin... Jemand einen Tipp?
Grüße
nrg
- - - Aktualisiert - - -
Hab's rausgefunden. Mit einer Closure wäre das möglich:
Dabei muss man aber beachten, dass priv hier von allen Instanzen geteilt wird (analog static aus OO-Sprachen). Private Instanz-Eigenschaften müsste man in init mit getter und ggf. setter hinzufügen:
Thema erledigt
ich suche nach einer Vererbungsmethode ohne dabei Function mit Prototype zu modifizieren. Ich bräuchte dabei eine Möglichkeit auf super-Methoden zugreifen zu können, was auch bei Mehrfachvererbung funktionieren soll. Zudem sollen die Konstruktorparameter der Unterklasse an die Superklasse übergeben werden.
Mir gefällt dieses Pattern ganz gut:
John Resig - Simple JavaScript Inheritance
Da weiß ich allerdings nicht, wie ich private Eigenschaften und Methoden hinzufüge. Das wird sogar in den Kommentaren besprochen. Ich krieg es aber irgendwie nicht hin... Jemand einen Tipp?
Grüße
nrg
- - - Aktualisiert - - -
Hab's rausgefunden. Mit einer Closure wäre das möglich:
Code:
var MySubClass = Class.extend((function(){
var priv = "my priv";
return {
init : function(){
this._super();
},
someFunc : function(){
// Call the inherited version of someFunc()
return this._super();
}
};
})());
Dabei muss man aber beachten, dass priv hier von allen Instanzen geteilt wird (analog static aus OO-Sprachen). Private Instanz-Eigenschaften müsste man in init mit getter und ggf. setter hinzufügen:
Code:
init : function(){
this._super();
var priv2 = "my priv non static";
this.getPriv2 = function() {
return priv2;
};
},
Thema erledigt