首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Javascript中有没有Function.caller的生产安全版本?

在Javascript中有没有Function.caller的生产安全版本?
EN

Stack Overflow用户
提问于 2019-08-28 13:06:49
回答 2查看 958关注 0票数 5

有没有办法返回调用当前函数的函数?Function.caller只适用于非严格模式的应用程序。

我希望能够在生产环境中使用此功能,因此我需要打开严格模式。

预期返回值:函数本身或函数名称。

代码语言:javascript
复制
function a() {
 b()
}

function b() {
 console.log(b.caller)
}

在严格模式下使用时,Function.caller会抛出错误:

未捕获调用者:不能在严格模式函数或用于调用它们的参数对象上访问“TypeError”、“callee”和“arguments”属性

EN

回答 2

Stack Overflow用户

发布于 2019-08-28 13:23:32

一种可能的方法是使用Console.trace

代码语言:javascript
复制
function a() {
 b()
}

function b() {
 console.trace()
}

a()

检查浏览器控制台以查看输出

票数 2
EN

Stack Overflow用户

发布于 2019-08-28 15:44:30

在JavaScript中,似乎没有一种灵活的方式来实现这一点。

当使用非标准解决方案可能是可接受的时,您可以查看Error.prototype.stack属性。你可以在p.s.w.ganswer中使用这个方法,就像Royson在评论中建议的那样。

对于更健壮的生产应用解决方案,我认为您应该考虑使用外部包(如stacktrace.js)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57685388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档