6

__FUNCTION__現在の関数の名前を取得できるように、JavaScript でPHP に相当するものを探しています。例えば:

function foo(){
    console.log(__FUNCTION__); // "foo" would be logged to the console
}

JavaScriptでこれを行う方法はありますか? __FUNCTION__または他の回避策に似た魔法の変数を使用しますか? そして、現在これを達成する方法がない場合、それは計画されていますか?

4

1 に答える 1

3

オブジェクトのcalleeプロパティを介して、現在実行中の関数への参照を取得する場合があります。ES5.1strictモードでは非推奨になっていることに注意してください。arguments

nameそれから、関数の(非標準)を取得できます。これは、関数宣言と名前付き関数式(IEの既知のバグを含む)でのみ機能し、オブジェクトプロパティとしての無名関数では機能しないことに注意してください。

var myObj = {
    method: function() { // unnamed!
        return arguments.callee.name || "anonymous";
    }
};
myObj.method(); // "anonymous"

私自身、デバッグ/エラーステートメントで静的文字列を使用し、関数の名前空間全体を付加して、コード内で簡単に見つけられるようにしています。

于 2012-10-10T17:40:40.627 に答える