1. Anrufer
Gibt einen Verweis auf die Funktion zurück, die die aktuelle Funktion aufruft.
FunktionName.caller
Das Funktionsname -Objekt ist der Name der ausgeführten Funktion.
veranschaulichen
Für Funktionen wird das Anruferattribut nur definiert, wenn die Funktion ausgeführt wird. Wenn die Funktion auf der obersten Ebene eines JavaScript -Programms aufgerufen wird, enthält der Anrufer NULL.
Das folgende Beispiel zeigt die Verwendung des Anruferattributs:
Die Codekopie lautet wie folgt:
Funktion CallerDemo () {
if (argumente.caller) {
var a = callerDemo.caller.toString ();
Alarm (a);
} anders {
alarm ("Dies ist eine Top -Funktion");
}
}
Funktion HandleCaller () {
callerDemo ();
}
Handlecaller ();
Funktion calleedemo () {
alarm (argumente.callee);
}
Calleedemo ();
2. Callee
Gibt das zu verwendende Funktionsobjekt zurück, dh den Körper des angegebenen Funktionsobjekts.
[Funktion.] Argumente.Callee
Der optionale Funktionsparameter ist der Name des derzeit ausgeführten Funktionsobjekts.
veranschaulichen
Der Anfangswert der Callee -Eigenschaft ist das Funktionsobjekt, das ausgeführt wird.
Die Callee -Eigenschaft ist ein Mitglied des Argumenteobjekts, das einen Verweis auf das Funktionsobjekt selbst darstellt, das der Rekursion anonymer Funktionen fördert oder um die Einkapselung der Funktion sicherzustellen. Zum Beispiel die rekursive Berechnung der Summe der natürlichen Zahlen von 1 bis n im folgenden Beispiel. Diese Eigenschaft ist nur verfügbar, wenn die relevante Funktion ausgeführt wird. Es ist auch wichtig zu beachten, dass Callee das Längenattribut hat, was manchmal besser zur Überprüfung ist. Argumente.Length ist die Länge des tatsächlichen Parameters und Argumente. Dies kann verwendet werden, um festzustellen, ob die Länge des formalen Parameters beim Aufrufen der Länge des tatsächlichen Parameters übereinstimmt.
Beispiel
Die Codekopie lautet wie folgt:
// Callee kann sich drucken
Funktion calleedemo () {
alarm (argumente.callee);
}
// verwendet zur Überprüfung der Parameter
Funktion calleelengthDemo (arg1, arg2) {
if (Argumente.length == Argumente.Callee.length) {
window.alert ("Überprüfen Sie, ob die formalen Parameter und tatsächlichen Parameter korrekt sind!");
zurückkehren;
} anders {
alert ("Real Argument Länge:" +Argumente.Length);
alert ("Größenlänge:" +Argumente.Callee.Length);
}
}
// rekursive Berechnung
var sum = function (n) {
if (n <= 0)
Rückkehr 1;
anders
Return n + Argumente.Callee (n - 1)
}
Eine allgemeinere rekursive Funktion:
Die Codekopie lautet wie folgt:
var sum = function (n) {
if (1 == n) return 1;
sonst return n + sum (n-1);
Wenn genannt: alarm (sum (100));
Die Funktion enthält einen Verweis auf die Summe selbst. Der Funktionsname ist nur ein variabler Name. Das Aufrufen der Summe innerhalb der Funktion entspricht dem Anruf
Eine globale Variable kann sich im Anruf selbst nicht gut widerspiegeln, und die Verwendung von Callee ist zu diesem Zeitpunkt eine bessere Methode.