3

重複の可能性:
JavaScript で呼び出し元の関数を見つけるにはどうすればよいですか?

呼び出し元 (コール スタックの前者) 関数であった JavaScript 関数を調べるにはどうすればよいですか?

前に呼び出された関数が onbeforeunload イベントで __doPostback であるかどうかを判断したいと思います。

4

2 に答える 2

15

各関数にはcallerプロパティが定義されています。

https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Function/callerから:

function myFunc() {
    if (myFunc.caller == null) {
        return ("The function was called from the top!");
    } else
        return ("This function's caller was " + myFunc.caller);
    }
}

このFunction.callerプロパティは ECMA3 標準の一部ではありませんが、IE や Firefox を含むすべての主要なブラウザーに実装されています。

匿名関数を使用している場合でも、callerプロパティを介してarguments.caleeプロパティにアクセスできます。

function() {
    if (arguments.callee.caller == null) {
        return ("The function was called from the top!");
    } else
        return ("This function's caller was " + arguments.callee.caller);
    }
}

このコードは現在の関数にアクセスしており、同じ非標準callerプロパティを参照していることに注意してください。これは、一部の最新のブラウザーでは実装されていない非推奨 arguments.callerのプロパティを直接使用することとは異なります。

于 2009-08-26T09:39:44.693 に答える
0

cr-48 の chromeos では、arguments.callee.caller は、両方の名前付き匿名呼び出し元関数に対して、関数本体全体を文字列として提供します。

于 2011-08-14T19:42:57.043 に答える