В Javascript я отчаянно нуждаюсь в том, чтобы дочерний класс переопределял привилегированную функцию базовых классов. Я не уверен, что это можно сделать, но было бы здорово, если бы кто-нибудь мог сказать мне, если это так и как это сделать. Если это невозможно, есть ли другой способ добиться того, что я пытаюсь сделать в примере с простым кодом ниже?
Я не могу преобразовать функцию базового класса 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();