15

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

function doSomething(req, res) {
  console.log('Function name: ' + doSomething.name);
}

这很好用,但我想(如果可能的话)在当前上下文中获取名称。这样,如果我稍后重命名该方法,我就不必手动更改它。是否存在指向当前正在执行的函数/当前上下文的通用对象(即类似于“this”)?谢谢你。

4

2 回答 2

4

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

第一个选项的长答案:

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

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

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

于 2019-12-26T18:52:34.970 回答
2

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

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

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

console.log(x);

现在,如果您决定给您的函数起一个不同的名称,您可以x在仍然能够通过使用来引用该函数的同时进行更改y

于 2013-08-09T18:28:28.953 回答