有没有办法返回调用当前函数的函数?Function.caller 仅适用于非严格模式应用程序。
我希望能够在生产环境中使用此功能,因此需要打开严格模式。
预期回报:函数本身或函数名称。
function a() {
b()
}
function b() {
console.log(b.caller)
}
Function.caller 在严格模式下使用时会抛出错误:
未捕获的类型错误:"调用方"、"被调用方"和"参数"属性可能无法在严格模式函数或调用它们的参数对象上访问
一种可能的方法是使用Console.trace
function a() {
b()
}
function b() {
console.trace()
}
a()
检查浏览器控制台以查看输出
在 JavaScript 中似乎没有一种灵活的方法来做到这一点。
当使用非标准解决方案可以接受时,可以查看Error.prototype.stack
属性。你可以在p.s.w.g的答案中使用这种方法,正如Royson在评论中已经建议的那样。
对于用于生产用途的更强大的解决方案,我认为您应该考虑使用外部包(如stacktrace.js(。