JavaScriptで呼び出し関数を決定する[重複]
-
20-09-2019 - |
質問
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 は、両方の名前付き匿名呼び出し元関数に対して、関数本体全体を文字列として提供します。
所属していません StackOverflow