Ü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

InformationsquelleAutor Jake M | 2011-11-07

Schreibe einen Kommentar