【发布时间】:2009-12-20 11:03:38
【问题描述】:
我正在尝试获取当前正在运行的函数的名称。根据我的阅读,这应该可以使用:
(arguments.callee.toString()).match(/function\s+(\[^\s\(]+)/)
但是,当我在 Firefox 和 Safari(Mac 上的最新版本)中运行它时,不会返回名称。
console.log( arguments.callee ) 返回函数的源,但不返回分配的名称。 arguments.callee.name 返回一个空字符串。
我的示例代码如下:
var testobj = {
testfunc: function(){
console.log( (arguments.callee.toString()).match(/function\s+(\[^\s\(]+)/) );
}
}
testobj.testfunc();
【问题讨论】:
-
请问,您为什么想要/需要这样做?
-
是的。所以我正在做一个涉及函数链的宠物项目。我有大约 50 个不同的函数,它们都运行相同的代码,除了它们中的一个特定变量被定义为函数的相同名称。我想将所有重复减少到一个函数,该函数检测调用函数的名称并将该名称用作当前硬编码的变量。使用这种方法,我可以在一行中定义所有函数。
-
我不得不说我对这个问题的糟糕答案感到非常失望,他们似乎都没有经过任何测试
标签: javascript function