javascript - 通过函数获取函数名称

时间:2014-04-07 11:26:56

标签: javascript

所以说,我有函数Hello_world()

function Hello_world() {
  b();
}

我想创建函数b(),其中b()返回调用它的函数的名称。在这种情况下,我希望b()返回"Hello_world"

那么应该如何构建b()? THX。

2 个答案:

答案 0 :(得分:4)

您可以使用三个despiseddeprecatednon-standard属性:

function b() {
    return arguments.callee.caller.name;
}

不要期望它适用于较旧的浏览器,较新的浏览器,严格模式,Internet Explorer,...

答案 1 :(得分:0)

堆栈跟踪也有一个技巧,它也被鄙视(因为它高度依赖于平台)而且至少可以说是难看:

function getStackTrace() { return new Error().stack; }

在chrome的开发人员控制台中会返回这样的内容:

"Error
    at getStackTrace (<anonymous>:2:35)
    at <anonymous>:2:1
    at Object.InjectedScript._evaluateOn (<anonymous>:581:39)
    at Object.InjectedScript._evaluateAndWrap (<anonymous>:540:52)
    at Object.InjectedScript.evaluate (<anonymous>:459:21)"

然后从那里开始使用reqular表达式。

可以在Chrome中使用,对其他人不确定,因此对于生产版本来说这很糟糕。不错的黑客虽然:)