首页 >web前端 >js教程 >如何在 JavaScript 中检索函数的名称?

如何在 JavaScript 中检索函数的名称?

DDD
DDD原创
2024-10-26 05:42:03539浏览

How Can You Retrieve a Function's Name in JavaScript?

访问作用域内的函数名称

从函数本身内部检索函数名称的能力是 JavaScript 中的一项有用技术。然而,这可能具有挑战性,因为从内部访问函数名称时不容易获得它们。

ES6 解决方案:

在 ES6 中,访问函数名称很简单:

<code class="javascript">const getFunctionName = () => myFunction.name;</code>

ES5 解决方案:

对于 ES5,建议使用以下方法:

<code class="javascript">function getFunctionName(func) {
  const funcStr = func.toString();
  const name = funcStr.substring('function '.length, funcStr.indexOf('('));
  return name;
}</code>

使用 Function.caller (不推荐):

Function.caller 提供了访问调用者姓名的非标准解决方案。但是,由于潜在的兼容性问题及其在严格模式下的弃用,应该避免使用它。

基于正则表达式的解决方案:

另一种高效的 ES5 方法涉及使用正则表达式:

<code class="javascript">const getFunctionName = (func) => /function\s+([a-zA-Z$][a-zA-Z$0-9]+)/.exec(func.toString())[1];</code>

示例:

让我们使用提供的代码片段作为示例:

<code class="javascript">var ns.parent = function() {
  // at this point, i want to know who the child is that called the parent
  // ie
  console.log(getFunctionName(this));
}

var obj = new ns.parent.child();</code>

这将输出:“newFunc”因为newFunc是调用父函数的函数。

以上是如何在 JavaScript 中检索函数的名称?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn