Backbone - Chrome 从触发器调用的调试函数

Backbone - Chrome debug function called from trigger

Backbone 允许您触发其他 类 中的函数 - 如果您正确使用 Backbone.Events.

a.js
MyApp.vent.on("some:trigger", function(){
 // ...
});

b.js
function test(){
    doSomething();       
    MyApp.vent.trigger("some:trigger");
}

您知道在调试 doSomething() 后达到函数 "some:trigger" 的一些方法吗? (无需在代码中找到它并在其上放置断点)。

可以使用Debugging JavaScript by Redefining Functions的概念。这本质上就是覆盖原函数,注入一个debugger语句,之后再调用原函数继续正常执行。

例子

我使用了命名函数而不是匿名函数,以便以后参考。

MyApp.event.on("some:trigger", myFunc);

现在我可以存储原始函数的副本,以便在调试后调用。

var oldFunc = myFunc;

myFunc = function() {
    debugger; // or use console.log()
    return oldFunc.apply(this, arguments);
}

这可以在控制台或代码段中调用,这样下次您运行代码时,它就会中断(或在 console.log 语句的情况下记录输出)。

好处

这样做的好处是,无论触发器处理程序在代码中执行了多少地方,或者执行了多少次,它总是会中断。您不必使用调试器控件逐步执行所有以前的代码。对于单个案例,单步执行就足够了。

您可以blackbox Backbone 代码。然后,当您进入 MyApp.vent.trigger("some:trigger") 时,Chrome 将跳过所有 Backbone 代码并直接转到您的处理程序代码。

上面链接的文档使事情变得有点复杂。您所要做的就是在源代码查看器中右键单击 Backbone 文件,然后 select "Blackbox Script"。然后进入 trigger 调用。