获取Node.js中正在执行的当前函数的名称

tit*_*nus 5 javascript node.js

在Node.js中,我试图获取正在执行的当前函数的名称:

function doSomething(req, res) {
  console.log('Function name: ' + doSomething.name);
}
Run Code Online (Sandbox Code Playgroud)

这很好用,但我希望(如果可能)在当前上下文中获取名称。这样,如果以后重命名该方法,则无需手动更改。是否有一个通用对象(即类似于“ this”)指向当前正在执行的功能/当前上下文?谢谢。

Cle*_*ado 5

简短回答:Object.values(this)[0].name

长答案:

let myInstanceArray = Object.values(this)将对象属性枚举为数组

let myInstance = myInstanceArray[0]获取数组中的第一个也是唯一一个项目

let myName = myInstance.name获取项目的名称。

  • 注意:arguments.callee.name 在“严格”模式下不起作用 (4认同)
  • 被调用者似乎已被弃用 (2认同)

bas*_*kum 1

我不想重复 Ian 的“可能重复”建议中的答案,但除了它们之外,还有一个解决方案可能值得一提:

您可以使用命名函数表达式,以获得一个可从函数外部访问的名称和一个可从函数内部访问的名称:

var x = function y() {
    console.log(y);
};

console.log(x);
Run Code Online (Sandbox Code Playgroud)

现在,如果您决定为函数指定不同的名称,则可以进行更改x,同时仍然可以使用 来引用该函数y

  • 乌夫。但这太麻烦了!这意味着以这种方式实现所有功能。它可能有效,但确实很痛苦,尤其是在大型应用程序中。:-/ (2认同)