Я объясню проблему, которую я решаю, на примере.
Обычно я определяю свои собственные библиотеки в js следующим образом:
window.myLib = (function () {
var public = {}; // for storing public methods and values
var private = {}; // for storing private methods and values
// Atributes and methods here
return public; // return the public part to be used globally
})();
Теперь я хочу выполнить переопределяемый метод в качестве обратного вызова из события click. Я хотел бы сделать это:
<input type="checkbox" id="mCheck" onchange="myLib.myMethod()">
Затем в библиотеке я объявляю обратный вызов "myMethod", который вызывает другой "переопределенный" метод publi c, который я хочу использовать глобально, "вне библиотеки" :
//...
public.overridable = function(param){console.log("Override this!");};
public.myMethod = function(){
if(private.condition) // Just to put some logic
public.overridable(private.value);
};
//...
Здесь возникает проблема. Если я переопределю «переопределенный» метод следующим образом:
myLib.overridable = function(p){console.log(p)};
Тогда обратный вызов событий click будет продолжать генерировать исходный «publi c .override», который выводит «Override this!» сообщение вместо значения параметра.
Как переопределить метод publi c для переопределения обратного вызова вне библиотеки ??
Заранее спасибо.