Bestimmen Sie den Aufruf des Funktions in Javascript [Duplikat]
-
20-09-2019 - |
Frage
Mögliche Duplizieren:
Wie finden Sie die CLIP-Funktion in JavaScript aus?
Wie kann ich in einer Javascript-Funktion, die die Angerufene war herauszufinden, (die ehemalige in dem Call-Stack) Funktion?
Ich möchte, um zu bestimmen, ob die frühere genannte Funktion eine __doPostBack im onbeforeunload Ereignisse ist.
Lösung
Jede Funktion hat eine caller
Eigenschaft definiert wird.
function myFunc() {
if (myFunc.caller == null) {
return ("The function was called from the top!");
} else
return ("This function's caller was " + myFunc.caller);
}
}
Die Function.caller
Eigenschaft ist nicht Teil des ECMA3 Standard, aber es ist in allen wichtigen Browsern implementiert, einschließlich Internet Explorer und Firefox.
Wenn Sie eine anonyme Funktion verwenden, können Sie immer noch die caller
Eigenschaft Zugriff über die arguments.calee
Eigenschaft:
function() {
if (arguments.callee.caller == null) {
return ("The function was called from the top!");
} else
return ("This function's caller was " + arguments.callee.caller);
}
}
Beachten Sie, dass dieser Code die aktuelle Funktion zugreift, und dann sich auf die gleiche Nicht-Standard caller
Eigenschaft auf sie. Dies unterscheidet sich von der Verwendung des deprecated arguments.caller
Eigenschaft direkt, das ist nicht implementiert in einigen modernen Browsern.
Andere Tipps
In chromeos auf cr-48, gibt arguments.callee.caller den gesamten Funktionskörper als String, für beiden Namen anonymen Anrufer Funktionen.