Grundsätzlich möchte ich vererbbare Funktionen wie in
%Vor%Und ich möchte, dass es gedruckt wird
%Vor%Ja, ich weiß, dass ich Base.prototype.foo.call (this) explizit aufrufen kann; Ich frage mich nur, ob es ein Muster gibt, um überschriebene Super-Klassen-Funktionen automatisch aufzurufen. Das Problem, das ich versuche zu lösen, ist 2-fach.
Ich würde vorschlagen, genau darüber nachzudenken, warum Sie dies tun, zumindest in Bezug auf die Anforderung Nr. 1. Denken Sie daran, dass Ihr gewünschtes Muster viel Flexibilität wegnehmen würde. Zum Beispiel, wenn Sie eine Situation haben, in der Sie die Anweisungen in umgekehrter Reihenfolge drucken möchten:
%Vor%Sie müssten entweder Ihr Muster aufgeben oder eine Funktion foo2 () in der abgeleiteten Klasse erstellen, die dann in der Basisklasse foo () aufruft. Weder ist sehr hübsch.
Gleiches gilt, wenn Sie sogar etwas so Einfaches tun möchten wie:
%Vor%Ich würde behaupten, dass die Verwendung dieses Musters für genau das, was Sie gerade tun möchten, funktionieren kann, aber es kann Ihnen Anfälle geben, wenn Sie eine scheinbar triviale Veränderung auf der Straße machen wollen. Alles um eine Codezeile zu speichern!
Soweit ich weiß, gibt es keine Sprache integrierte Destruktor-Funktionalität in JavaScript. Es geht um Frameworks. Wenn Sie beispielsweise ASP.NET Ajax verwenden, erwartet das Framework, dass Ihre Objekte über eine Dispose-Methode verfügen, die für das Freigeben von Ressourcen zuständig ist (Event-Handler). Also liegt es an dir.
Ok, das ist nicht ganz , wonach du suchst, da es kein "Muster" ist, aber es ist ein möglicher Implementierungspfad, dem du folgen könntest:
Schauen Sie sich das MooTools Class.Extras -Paket an (mangels eines besseren Wortes). Mit der Chain-Klasse könnten Sie wahrscheinlich die gewünschte Funktionalität erhalten.
Ich würde einen Weg vorziehen, wo ich Abgeleitete = kettenweise () nicht zuweisen würde, so dass die API die gleiche wäre, wie Sie in Ihrer Frage hatten, aber im Moment ist dies der beste Weg, um es zum Laufen zu bringen. Es funktioniert, indem jede Methode des Objekts durch eine Methode ersetzt wird, die die ersetzte Methode aufruft und die Elternkette aufruft, wobei sie ihre Methoden auf dem Weg aufruft.
%Vor%Tags und Links javascript