Chrome调试器调用堆栈如何工作,尤其是命名?

时间:2014-07-10 18:14:14

标签: javascript google-chrome debugging backbone.js

我会假设调用堆栈命名函数,它看起来像它试图,但它们是奇怪的名称。例如,当进入Backbone fetch()时,我得到了这个。

enter image description here

_.extend.fetch我假设是指Backbone.Collection.prototype.fetch

此函数是从Backbone.View.extend.initialize调用的,我假设它是Backbone.View.prototype.initialize

为什么命名如此不奇怪,如果不准确?

1 个答案:

答案 0 :(得分:0)

使用_.extend from the underscore library将原型方法添加到Collection,即最新版本的第633行:

  

https://github.com/jashkenas/backbone/blob/628590bac02b7eb7ef6590773fdb90422e77b913/backbone.js#L633

目前还不清楚Chrome是如何将其转换为_.extend.fetch的,但这可能与它有很大关系。在我看来,fetch是传递给_.extend的文字对象的一部分,所以也许这就是推导。

许多库使用匿名对象使用这种奇怪的扩展语法定义对象,这可能会使调试器混淆不少。但是,例如,如果没有像Coffeescript这样的东西,很难简洁地为原型分配属性。