javascript - 通过函数获取函数名称[重复]
Posted
技术标签:
【中文标题】javascript - 通过函数获取函数名称[重复]【英文标题】:javascript - Get name of function through a function [duplicate] 【发布时间】:2014-05-19 14:45:58 【问题描述】:也就是说,我有函数Hello_world()
:
function Hello_world()
b();
我想创建函数b()
,其中b()
返回调用它的函数的名称。在这种情况下,我希望 b()
返回 "Hello_world"
。
那么b()
应该如何构造呢?谢谢。
【问题讨论】:
不,你不想这样。 What problem你想解决这个问题吗? 试试这个***.com/questions/3178892/… ***.com/questions/280389/… 【参考方案1】:您可以为此使用三个 despised、deprecated 和 non-standard 属性:
function b()
return arguments.callee.caller.name;
不要指望它可以在旧浏览器、新浏览器、严格模式、Internet Explorer 中运行……
【讨论】:
+1 我不知道。如果它是非标准的,我们可以将方法名称作为参数传递给b(theCallerName) return theCallerName
吗?
是的,你可以而且应该,尽管这让b()
变得多余:-)
@Praveen——希望您传递对函数的引用,而不仅仅是其名称。 ;-)
@RobG:实际上我的意思是把名字作为字符串传递是最好的解决方案:-)【参考方案2】:
堆栈跟踪还有一个技巧,它也被鄙视(因为它高度依赖于平台)并且至少可以说丑陋:
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)"
然后你从那里开始使用正则表达式。
可以在 Chrome 中工作,但对其他人不确定,因此对生产版本不利。不错的 hack :)
【讨论】:
以上是关于javascript - 通过函数获取函数名称[重复]的主要内容,如果未能解决你的问题,请参考以下文章