【问题标题】:Seeking an alternative to arguments.callee.name for use in console.log [duplicate]寻找arguments.callee.name 的替代品以在console.log 中使用[重复]
【发布时间】:2017-05-27 21:34:43
【问题描述】:
'use strict';
function foobar(){
    console.log(arguments.callee.name);  // foobar
}

我听说这曾经有效,但现在已弃用。对于其他情况,似乎还有其他替代方法,我已经看到很多关于使用 function.name 的引用,但必须输入 foobar.name 会破坏目的。在一个类中,我可以使用 this.constructor.name 并获取类的名称。我正在寻找类似的函数名称。

为什么这不是 ES6 以来任何现有问题的重复:一个类似问题的答案谈到使用命名函数,但这是一个命名函数。对于另一个问题,答案是使用 function.name - 但这个问题基本上是在询问是否有办法在不知道名称的情况下记录名称。对于另一个问题,答案是使用 ()=>Function.caller.name 之类的东西,但这是非标准的。

【问题讨论】:

  • @sasha_gud 我认为这个问题非常相似——提问者想在断言消息中输出函数的名称。关于使用命名函数的问题的答案不适合这种情况。这个函数被命名为:foobar。

标签: javascript


【解决方案1】:

如果您使用的是 ES6,该函数现在有一个属性 'name'

使用您的示例:

function foobar(){ console.log(foobar.name); // foobar }

【讨论】:

  • 我的问题是:有没有一种通用的方法来输出函数的名称,而无需输入函数的名称。有人可以键入 console.log("foobar") 并完成它。我正在寻找可以在通用组件中使用的东西,而不必每次使用时都进行自定义。
  • 您能否提供一个代码示例来说明您实际尝试执行的操作?您显示的代码示例将按照您的要求以与 arguments.callee.name 相同的方式工作。这里的上下文很重要,范围也很重要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-21
  • 2015-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多