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.

War es hilfreich?

Lösung

Jede Funktion hat eine caller Eigenschaft definiert wird.

https://developer.mozilla.org/en/Core_JavaScript_1 .5_Reference / Global_Objects / Funktion / Anrufer :

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top