arguments.callee
不幸deprecated,使用它会在“严格模式”中引发错误。
是否有任何新的适当(标准)替代方法可以在实际功能中获取功能名称? 或者它将在未来的计划中ECMA6,7?
最近的answer只不过是肮脏的黑客,我不能接受。
arguments.callee.caller.name
也没有工作(nodejs v7.5.0)
答案 0 :(得分:2)
是否有任何新的正确(标准)替代方法可以在实际函数中获取函数名称?
不,没有。
或者它是否会出现在ES的未来计划中?
不,因为没有必要。在当前函数中,你知道名字,也可以使用字符串文字,在其他函数中你只需要一些引用(但不是.callee
)。
答案 1 :(得分:1)
如果您使用Node.js,则会出现一个针对此问题的有用包:caller-id
var callerId = require('caller-id');
function foo() {
bar();
}
function bar() {
var callerName = callerId.getData().functionName; /* 'foo' */
}