質問

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

JavaScript 関数内で、呼び出し元 (コールスタック内の前者) 関数を確認するにはどうすればよいですか?

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

役に立ちましたか?

解決

それぞれの機能には、 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 直接財産、つまり 実装されていない 一部の最新のブラウザでは。

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top