在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() {}
});
显然,浏览器的行为可能会有所不同。
答案 0 :(得分:1)
首先,从ECMAScript 5开始,JavaScript没有类的概念,但我理解你的意思。
为了获得良好的堆栈跟踪,您必须命名该函数:
registerComponent('my-component', {
method: function myComponent$_method() {}
});
命名函数表达式可创建良好的堆栈跟踪。就个人而言,我现在仍然坚持new
的堆栈跟踪,因为将(new
与构造函数和命名函数表达式)结合起来,目前产生了JS中最好的堆栈跟踪。
请注意,此行为将来可能会有所改善。