Javascript中是否有Function.caller的生产安全版本?



有没有办法返回调用当前函数的函数?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(。

最新更新