Вы можете изменить каждое определение функции вручную.
Вы можете изменить каждый вызов функции вручную.
Если какой-либо из этих рефакторингов выходит за рамки ваших проблем, то вы в затруднительном положении.
Я не знаю общего способа решения вашей проблемы.
Однако, если ваши функции доступны глобально или имеют пространство имен, вы можете сделать следующее довольно легко (и можете сделать это намного больше).в общем случае путем параметризации функций pre
, post
и т. д.):
NS = {
foo : function(){ console.log('foo'); },
bar : function(){ console.log('bar'); }
};
// <-- new code goes here
NS.foo();
NS.bar();
// new code below, that should go after definitions but before the calls
(function(){
var pre = function(){ console.log('pre'); },
post = function(){ console.log('post'); };
for (var fn in NS) {
NS[fn] = (function(fn){ return function(){ pre(); fn(); post(); }; })(fn);
}
})();