Переопределить привилегированный метод базового класса

Как я могу сделать так, чтобы дочерний класс переопределил привилегированный метод базового класса?

Если это невозможно, есть ли другой способ достичь того, что я пытаюсь достичь, простым пример кода ниже?

Я не могу преобразовать функцию базового класса parseXML () в общедоступную, потому что она требует доступа к закрытым переменным

    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();
13
задан sazr 30 March 2019 в 18:17
поделиться