スコープ内の関数名へのアクセス
関数自体の内部から関数名を取得する機能は、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 は、呼び出し元の名前にアクセスするための非標準ソリューションを提供します。ただし、潜在的な互換性の問題と厳密モードでの非推奨のため、これは避けてください。
正規表現ベースのソリューション:
もう 1 つの効率的な 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 中国語 Web サイトの他の関連記事を参照してください。