Überschreiben einer Basisklasse Funktion
In Javascript habe ich einer verzweifelten Notwendigkeit für eine Kind-Klasse zu überschreiben einer base classes privilegierte Funktion. Ich bin nicht sicher, ob dies möglich ist, zu tun, aber es wäre toll, wenn jemand mir sagen konnte, wenn es & wie es zu tun. Wenn das nicht möglich ist, gibt es einen anderen Weg, um zu erreichen, was ich versuche zu tun, in der einfachen code-Beispiel unten?
Ich kann nicht konvertieren, die baseclass-Funktion parseXML() auf public, weil es erfordert den Zugriff auf private Variablen
function BaseClass()
{
var map = {};
//I cannot make this function public BECAUSE it accesses & changes private variables
this.parseXML = function( key, value )
{
alert("BaseClass::parseXML()");
map[key] = value;
}
}
function ChildClass()
{
BaseClass.call(this);
this.parseXML = function( key, value, otherData )
{
alert("ChildClass()::parseXML()");
//How can I call the base class function parseXML()?
//this.parseXML(); //calls this function not the parent function
//MyClass.prototype.doStuff.call
BaseClass.prototype.parseXML.call(this, key, value); //fails
//BaseClass.prototype.parseXML(); //fails
//perform specialised actions here with otherData
}
}
ChildClass.prototype = new BaseClass;
var a = new ChildClass();
a.parseXML();
möglich, Duplikat der Möglich zum überschreiben eines Basisklassen privilegierte Funktion? ... bitte Bearbeiten Sie die original-Frage statt.
Vorschlag: versuchen Sie nicht zu zwingen, Sichtbarkeit von Methoden in JavaScript. Es ist nicht entworfen, um private-und protected-Methoden. Dokumentieren Sie Ihren code richtig. Markieren Sie diese Methode als private in den Kommentar. Wenn jemand nutzt die Methode sowieso und bricht deshalb seinen code, wenn er verwendet Ihre Bibliothek -> sein problem.
mögliche Duplikate von Aufruf base-Methode unter Verwendung von javascript prototype
Vorschlag: versuchen Sie nicht zu zwingen, Sichtbarkeit von Methoden in JavaScript. Es ist nicht entworfen, um private-und protected-Methoden. Dokumentieren Sie Ihren code richtig. Markieren Sie diese Methode als private in den Kommentar. Wenn jemand nutzt die Methode sowieso und bricht deshalb seinen code, wenn er verwendet Ihre Bibliothek -> sein problem.
mögliche Duplikate von Aufruf base-Methode unter Verwendung von javascript prototype
InformationsquelleAutor Jake M | 2011-11-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Live-Beispiel
Grundsätzlich cache die privilegierte Methode (die nur definiert, die sich auf das Objekt) und dann rufen Sie in der neuen Funktion, die Sie zuweisen, um die privilegierte Methode name.
Aber eine elegantere Lösung wäre:
Live-Beispiel
Auch bonus-Umsetzung mit
pd
this.parseXML =
Teil in der vierten Zeile.Ich habe. Behoben, jetzt.
Was ist der Vorteil der zweiten Methode?
Ich fand folgenden Artikel sehr hilfreich für das Verständnis des obigen code, und noch wichtiger, die zugrunde liegende Logik, warum es funktioniert: developer.mozilla.org/en-US/docs/Web/JavaScript/...
InformationsquelleAutor Raynos
IMO, benötigen Sie einen Javascript-Bibliothek wie Ext Js um diese Aufgabe zu vereinfachen. Trotzdem, das folgende Beispiel veranschaulicht, wie Sie schreiben einige helper-Methoden. Es ist ein Teil einer unveröffentlichten open-source-Projekt, an dem ich arbeite.
Hier ist das Ergebnis:
Wie Sie sehen können in dem obigen code, wird das Prototyp-Objekt stellt einige Funktionen zum definieren eines namespace (
Prototype.beginScope
,Prototype.endScope
undPrototype.getScope
) oder der Definition eines Prototyps (Prototype.define
).Können Sie Erben ein Prototyp von einem anderen mit erweitern wie java.
Oder rufen Sie die base-class-Methode wie folgt:
Auch, jeder Prototyp definieren Sie mit obigen code wird abgeleitet aus JWObject standardmäßig.
für Ihre -1. Aber du verpasst "verworren" aus der Liste der Adjektive.
und andere downvoters Leider kann ich nicht downvote schamlos meine Empfehlung. Aber egal, der Spaß macht, sehe ich dieses system aus meiner Sicht, wie ein RIA-Entwickler. Auf jeden Fall würde ich gerne wissen, eine gute JavaScript-Bibliothek Umstände aus deiner Sicht. 🙂 Vielen DANK
href="https://github.com/Raynos/pd" >pd wäre ein solides Beispiel für geringes Gewicht OO Zucker für javascript. Das einzige, was fehlt, ist
super
und es gibt keinen guten Mechanismus für super.InformationsquelleAutor Mehdi Golchin