arguments.callee
不幸的是deprecated,并且在“严格模式”下使用它会引发错误。
是否有任何新的适当(标准)替代方法可以在实际函数中获取函数名称? 还是会出现在未来的 ECMA6、7 计划中?
最近的答案只不过是肮脏的黑客,我的回答是不可接受的。
arguments.callee.caller.name
也不工作(nodejs v7.5.0 )
arguments.callee
不幸的是deprecated,并且在“严格模式”下使用它会引发错误。
是否有任何新的适当(标准)替代方法可以在实际函数中获取函数名称? 还是会出现在未来的 ECMA6、7 计划中?
最近的答案只不过是肮脏的黑客,我的回答是不可接受的。
arguments.callee.caller.name
也不工作(nodejs v7.5.0 )
是否有任何新的适当(标准)替代方法可以在实际函数中获取函数名称?
不,那里没有。
还是在 ES 的未来计划中?
不,鉴于没有必要。在当前函数中,您知道名称并且也可以使用字符串文字,在其他函数中您只需要一些参考(但不是.callee
)。
如果你使用 Node.js,有一个有用的包正好可以解决这个问题:caller-id
var callerId = require('caller-id');
function foo() {
bar();
}
function bar() {
var callerName = callerId.getData().functionName; /* 'foo' */
}