访问作用域内的函数名称
从函数本身内部检索函数名称的能力是 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中文网其他相关文章!