Я пытаюсь отлаживать большое количество кода JS внутри объекта JS. Внутри этого JS-объекта находится около 150 функций, которые вызываются индивидуально через отдельный скрипт.
Пример объекта JS
var OmnitureCall = {
reportA: function() {
/* random actions */
},
reportB: function() {
/* random actions */
}
...
};
Другой файл JS, вызывающий объект
OmnitureCall.reportA(...);
Где-то во внешнем файле JS происходит несколько reportA, хотя должен произойти только один, поэтому я хотел бы отладить основной объект и посмотреть, когда вызываются различные функции отчета, и посмотреть, где запускается двойное событие. Тем не менее, единственный способ, которым я пока вижу это, — иметь основную функцию внутри объекта OmnitureCall, которая действует как «обработчик» для всех вызовов, выполняет некоторую базовую отладку, а затем запускает вызванную функцию.
Пример обработчика объектов JS
var OmnitureCall = {
handler: function(callback) {
console.log('something is called');
if(typeof(callback) === "function") {
callback();
}
},
reportA: function() {
this.handler(function(){
/* random actions */
});
},
reportB: function() {
this.handler(function(){
/* random actions */
});
}
...
};
Недостатки:
- Есть более 100 функций, которые мне пришлось бы скопировать и вставить и this.handler и исправить
- В большинстве этих функций ключевое слово «this» используется для ссылки на другие функции внутри этого объекта OmnitureCall, и я беспокоюсь, что контекст этого «this», на который ссылается, будет потерян, если все это будет обернуто как функция обратного вызова, а затем вызвано.
Итак, мой вопрос к любым разработчикам JS: есть ли способ прикрепить функцию к этому объекту, которая всегда будет вызываться до того, как какая-либо функция была фактически вызвана (имейте в виду, что я также пытаюсь документировать это имя указанной функции, которая называется, чтобы я мог выяснить, что увольняется дважды).
Если это невозможно, и идея функции обработчика - единственное, что может работать, кто-нибудь знает, как сохранить контекст "это", относящийся к объекту в целом, если функция передается в качестве параметра обработчику, а затем вызывается ?
Большое спасибо..