javascript:获取调用函数的名称

时间:2012-03-17 08:36:26

标签: javascript

我正在编写一个错误事件处理程序,它捕获错误并对服务器进行ajax调用以进行报告。问题是,很多时候,我的代码看起来像这样:

function A() {

  //lots of works to calculate SomeParameters; can bug
  CalledVeryOften(SomeParameters);
}

function CalledVeryOften(SomeParameters) {
  // a little bit of work
}

如果我在功能A(或B,C,D ......)中捕获事件,那太好了!但问题是,如果window.onerror事件在CalledVeryOften中触发,则可能是参数可能无法正确计算。

CalledVeryOften中有没有办法确定从哪个函数调用它?

感谢。

1 个答案:

答案 0 :(得分:2)

调用函数的名称可以通过弃用的arguments.callee.caller.name属性 MDN:arguments.callee 获得。

另一种方法是解析new Error().stack的值。

在Chrome中,您可以使用:

var stackTrace = {};
Error.captureStackTrace(stackTrace); // Get the stack trace
stackTrace = stackTrace.stack;       // Formatted string