Schlüsselwörter: Argumente, Angerufener, Anrufer
Argumente: Stellt die an die Funktion übergebenen Parameter dar
Aufgerufener: Anweisung, die Funktionen und Funktionskörper darstellt
Aufrufer: Stellt die Funktion dar, die die Funktion aufruft
Argumente
Dieses Objekt repräsentiert die ausgeführte Funktion und die Parameter der Funktion, die sie aufruft.
Anrufer
Gibt einen Verweis auf die Funktion zurück, die die aktuelle Funktion aufgerufen hat.
Funktionsname.Aufrufer
Das functionName-Objekt ist der Name der ausgeführten Funktion.
veranschaulichen
Bei Funktionen wird das Aufruferattribut erst definiert, wenn die Funktion ausgeführt wird. Wenn die Funktion von der obersten Ebene aus aufgerufen wird, enthält der Aufrufer null. Wenn das Caller-Attribut in einem String-Kontext verwendet wird, ist das Ergebnis dasselbe wie functionName.toString, d. h. der dekompilierte Text der Funktion wird angezeigt.
Angerufener
Gibt das ausgeführte Funktionsobjekt zurück, das den Hauptteil des angegebenen Funktionsobjekts darstellt.
[function.]arguments.callee
Der optionale Funktionsparameter ist der Name des gerade ausgeführten Funktionsobjekts.
veranschaulichen
Der Anfangswert des aufgerufenen Attributs ist das ausgeführte Funktionsobjekt.
Das aufgerufene Attribut ist ein Mitglied des Argumentobjekts. Es stellt einen Verweis auf das Funktionsobjekt selbst dar, was für die Rekursion anonymer Funktionen oder die Sicherstellung der Kapselung von Funktionen von Vorteil ist. Im folgenden Beispiel wird beispielsweise die Summe natürlicher Funktionen rekursiv berechnet Zahlen von 1 bis n. Diese Eigenschaft ist nur verfügbar, wenn die zugehörige Funktion ausgeführt wird. Es sollte auch beachtet werden, dass callee ein Längenattribut hat, was manchmal zur Überprüfung besser ist. arguments.length ist die tatsächliche Parameterlänge und arguments.callee.length ist die formale Parameterlänge. Daraus können Sie beim Aufruf ermitteln, ob die formale Parameterlänge mit der tatsächlichen Parameterlänge übereinstimmt.
Kopieren Sie den Codecode wie folgt:
<script type='text/javascript'>
Funktionstest(x,y,z)
{
Alert("Tatsächliche Parameterlänge:"+arguments.length);
Alert("Formale Parameterlänge:"+arguments.callee.length);
Alert("Formale Parameterlänge:"+test.length);
Alert(Argumente[ 0 ])
Alert(test[ 0 ]) // undefiniert hat keine solche Verwendung
}
//test(1,2,3);
test(1,2,3,4);
/*
* Argumente sind kein Array (Array-Klasse)
*/
Array.prototype.selfvalue = 1;
Funktion testAguments() {
Alert( " arguments.selfvalue= " + arguments.selfvalue);
}
alarm("Array.sefvalue="+new Array().selfvalue);
testAguments();
/**/ /*
* Demonstriert das Aufruferattribut der Funktion.
* Beschreibung: (aktuelle Funktion).Aufrufer: Gibt einen Verweis auf die Funktion zurück, die die aktuelle Funktion aufgerufen hat
*/
Funktion callerDemo() {
if (callerDemo.caller) {
var a = callerDemo.caller.arguments[ 0 ];
Warnung(a);
} anders {
Alert( " Dies ist eine Top-Funktion " );
}
}
Funktion handleCaller() {
callerDemo();
}
callerDemo();
handleCaller("Parameter 1", "Parameter 2");
/**/ /*
* Demonstriert das Callee-Attribut der Funktion.
* Beschreibung: arguments.callee: Der Anfangswert ist das ausgeführte Funktionsobjekt, das für anonyme Funktionen verwendet wird
*/
Funktion calleeDemo() {
alarm(arguments.callee);
}
calleeDemo();
(function(arg0,arg1){alert("Die Anzahl der Formen ist: "+arguments.callee.length)})();
/**/ /*
* Demonstrieren Sie die Verwendung von Apply- und Call-Funktionen
* Hinweis: Die Funktion besteht darin, die Funktion zur Ausführung an ein anderes Objekt zu binden. Der einzige Unterschied zwischen den beiden besteht in der Art und Weise, wie Parameter definiert werden:
* apply(thisArg,argArray);
* call(thisArg[,arg1,arg2…] ]);
* Das heißt, dem Zeiger this in allen Funktionen wird thisArg zugewiesen
*/
functionObjectA() {
alarm( "ObjectA() ausführen" );
alarm(arguments[ 0 ]);
this .hit = function (msg) {alert(msg)}
this .info = „Ich komme von ObjectA“
}
functionObjectB() {
alarm( "ObjectB() ausführen" );
// Rufen Sie die ObjectA()-Methode auf und alles im ObjectA-Konstruktor wird durch dieses in ObjectB ersetzt.
ObjectA.apply( this ,arguments); // ObjectA.call(this);
Alert(diese .info);
}
ObjectB('Parameter 0');
var value = "globale Variable";
Funktion Obj() {
this .value = "Object!";
}
Funktion Fun1() {
alarm( this .value);
}
Fun1();
Fun1.apply(window);
Fun1.apply(new Obj());
</script>