Ответ 1
Сначала вы можете добавить вызов функции, такой как __checkDebug(); который будет проверять глобальную (или полу-глобальную) переменную, и когда указанная переменная истинна, вызовите отладчик.
function __checkDebug() {
if (debugme) debugger;
}
все ваши функции, которые вас беспокоят относительно отладки, будут такими:
function foo() {
__checkDebug();
//.... whatever foo was gonna do.
}
Затем вы можете сделать это немного дальше и динамически украшать функции, пока код выполняется следующим образом:
Function.prototype.debug = function(){
var fn = this;
return function(){
if (debugme) debugger;
return fn.apply(this, arguments);
};
};
foo = foo.debug();
теперь любое время, когда foo называется, будет вызывать отладчик, если переменная debugme является правдой.
Другим вариантом было бы создание системы построения javascript, которая вводит вызов после каждого объявления функции - для этого требуется синтаксический синтаксический анализатор, но если вы только хотите изменить функции, простой токенизатор для этого случая использования довольно прост в написании - но я оставлю это до вас.