QA@IT

strictモードのJavaScriptで、現在実行中の関数名の取得したい

12068 PV

strictモードのJavaScriptで、現在実行中の関数オブジェクト自身から、その関数名の取得したいのですが、解決策が分かりません。

strictモードでないなら、関数内で

arguments.callee

を取得できるのですが、strictモードでは取得することができません。

Function.nameプロパティにも関数名はあるのですが、実行中の関数からFunctionオブジェクト自身を参照する方法が分かりません。

下記のような実装はできますか?

function test () {
  console.log(~なにか~); // -> test
}

回答

追加で関数を作成する方法だったら、次の内容で実現できました。

function logIt(message) {
    var stack = new Error().stack,
        caller = stack.split('\n')[2].trim();
    console.log(caller + ":" + message);
}

function test () {
  logIt('hello');
  //console.log(arguments.callee); // -> test
}

参考:https://stackoverflow.com/questions/38435450/get-current-function-name-in-strict-mode

編集 履歴 (0)
  • 回答ありがとうございます。
    提示された内容で解決することができました。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。