javascript - 控制堆栈跟踪中的类名

标签 javascript firefox google-chrome-devtools

在 javascript 中将类定义为函数可以生成完美的堆栈跟踪:

name.space.MyClass = function() {};

name.space.MyClass.prototype.method = function() {
  console.trace();
};

(new name.space.MyClass()).trace();

输出如下(在 Chrome 中):

name.space.MyClass.method
(anonymous function)

当您使用函数定义类时,我正在徘徊是否有任何方法可以获得可读的堆栈跟踪:

registerComponent('my-component', {
  method: function() {}
});

显然,行为可能因浏览器而异。

最佳答案

首先,从 ECMAScript 5 开始,JavaScript 没有类的概念,但我明白你的意思。

为了获得良好的堆栈跟踪,您必须为函数命名:

registerComponent('my-component', {
  method: function myComponent$_method() {}
});

命名函数表达式创建良好的堆栈跟踪。就个人而言,我现在也坚持使用 new 来进行堆栈跟踪,因为将两者(new 与构造函数和命名函数表达式)结合起来会产生迄今为止 JS 中最好的堆栈跟踪此刻。

请注意,此行为将来可能会变得更好。

关于javascript - 控制堆栈跟踪中的类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23734077/

相关文章:

CSS border-image gradient 适用于 Chrome,不适用于 Firefox 或 IE

python - Selenium Python 绑定(bind)无法将变量传递到函数中

firefox - 如何让 Firefox 在同一窗口中打开通过 WebDriver 打开的所有链接?

android - 在笔记本电脑上通过 USB 调试 android chrome 会出现 404 页面

css - 开发工具 : How to visualize scss changes automatically without the need to save

javascript - 在 fs.stat 之后获取 'undefined'

javascript - 尝试制作一个带有HTML按钮的转换工具

javascript - jQuery slideToggle 和带有许多框的 cookie

javascript - 让 div 坐在另一个有关系的下面

electron - Electron :如何在BrowserWindow中打开chrome://inspect特殊URL来调试SharedWorkers