JavaScript:获取自身内部的函数名称

inc*_*nez 5 javascript jquery arguments extjs

是的,我知道有很多关于这个问题的线程,对于初学者:

从函数本身获取函数名称[重复]

从内部获取函数名称

不推荐使用Arguments.callee - 应该使用什么?

但是给出答案的问题是arguments.callee已被弃用.所有答案都说只是给你的功能一个名字.但是,据我所知,这并不能解决我的问题.说我有以下功能:

function blah() {
  // arguments.callee.name is deprecated
  console.log('The function name is: ' + arguments.callee.name + '.');
}
Run Code Online (Sandbox Code Playgroud)

但是因为它被弃用了,我不应该使用它,所以我应该使用什么呢?有什么办法可以在函数本身内部访问函数名,或者我只是出于概率吗?

如果它使事情变得更容易,我使用的是Ext JS框架,但我还没有找到一种了解函数名称的方法.如果没有,是否有jQuery方法?我在这里绝望.

HBP*_*HBP 2

您可以引发异常并检查堆栈跟踪。

以下上下文证明适用于 Chrome 浏览器:

function test () {
  try { [].undef () } catch (e) {
     console.log (e.stack.split ('\n')[1].split (/\s+/)[2]);
  }
}
Run Code Online (Sandbox Code Playgroud)

如需更强大的实现,请参阅http://www.eriwen.com/javascript/js-stack-trace/ ,它在任何浏览器中提供完整的堆栈跟踪。

更现代、更全面的堆栈跟踪分析器是http://stacktracejs.com