ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で関数の名前を取得するにはどうすればよいですか?

JavaScript で関数の名前を取得するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-26 05:42:03540ブラウズ

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 は、呼び出し元の名前にアクセスするための非標準ソリューションを提供します。ただし、潜在的な互換性の問題と厳密モードでの非推奨のため、これは避けてください。

正規表現ベースのソリューション:

もう 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。