所以说,我有函数Hello_world()
:
function Hello_world() {
b();
}
我想创建函数b()
,其中b()
返回调用它的函数的名称。在这种情况下,我希望b()
返回"Hello_world"
。
那么应该如何构建b()
? THX。
答案 0 :(得分:4)
您可以使用三个despised,deprecated和non-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中使用,对其他人不确定,因此对于生产版本来说这很糟糕。不错的黑客虽然:)