问题
arguments.callee unfortunatelly deprecated, and using it throws an error in "strict mode".
Is there any new proper(standard) alternative for getting function name inside actual function? Or will it be in future plans ECMA6, 7?
Recent answer is no more than dirty hack and not acceptable for me answer.
And arguments.callee.caller.name
not working either (nodejs v7.5.0)
回答1:
Is there any new proper (standard) alternative for getting function name inside actual function?
No, there is not.
Or will it be in future plans for ES?
No, given that there is no need for it. Inside the current function, you know the name and could just as well use a string literal, in other functions you just need some reference (but not .callee
).
回答2:
If you use Node.js there is a useful package exactly for this problem: caller-id
var callerId = require('caller-id');
function foo() {
bar();
}
function bar() {
var callerName = callerId.getData().functionName; /* 'foo' */
}
来源:https://stackoverflow.com/questions/42473446/how-to-get-function-name-in-strict-mode-proper-way