在 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/