Function |
|
Eigenschaften: arguments (Argumentnamen-Array) |
|
Über das Objekt Function haben Sie Zugriff auf Eigenschaften einer JavaScript- Funktion. JavaScript-Funktionen werden dadurch also selbst Gegenstand von JavaScript-Anweisungen. Sinnvoll ist das Arbeiten mit dem Function-Objekt beispielsweise im Zusammenhang mit einer variablen Anzahl von Parametern in einer Funktion.
Ein neues Objekt Function können Sie extra erzeugen.
Farbe = new Function("NeueFarbe","document.bgColor=NeueFarbe;"); |
function Farbe(NeueFarbe) { document.bgColor=NeueFarbe; } |
<a href="javascript:Farbe(#FFCC99)">Neue Hintergrundfarbe</a> |
Betrachten Sie in dem Beispiel zunächst den mittleren Teil ("Beispielentsprechung in normaler Schreibweise"). Das ist die normale Definition einer Funktion. Im Teil darüber wird die gleiche Funktion definiert, jedoch in Form eines Funktionsobjekts. Das Funktionsobjekt wird mit new Function(...) erzeugt. Der Rückgabewert wird in einer Variablen gespeichert, im Beispiel in der Variablen Farbe. Als Parameter erwartet die Function-Funktion eine beliebige Anzahl Parameter, die bis zum vorletzten als Parameter interpretiert werden, die die Funktion erwarten soll. Im Beispiel gibt es einen solchen Parameter, nämlich den Parameter NeueFarbe. Der letzte Parameter, der der Function-Funktion übergeben wird, ist eine Zeichenkette, die den gesamten Funktionsinhalt darstellt, also die JavaScript-Anweisungen innerhalb der Funktion.
Eine Variable, in der eine Funktion gespeichert ist, wie im Beispiel die Variable Farbe, können Sie genauso aufrufen wie eine Funktion. Der dritte Teil ("Beispielaufruf für beide Fälle") gilt tatsächlich für beide Fälle, denn im einen Fall wird die Variable Farbe aufgerufen, in der eine ganze Funktion gespeichert ist, und im anderen Fall wird eine Funktion namens Farbe() aufgerufen.
Sie müssen jedoch kein neues Funktionsobjekt erzeugen, sondern können auch direkt Eigenschaften des Funktionsobjekts auf eine Funktion anwenden.
<html><head><title>Test</title> </head><body> <script language="JavaScript"> function HTMLListe(Typ) { document.write("<" + Typ + "L>"); for (var i=1; i<HTMLListe.arguments.length; i++) document.write("<LI>" + HTMLListe.arguments[i]); document.write("</" + Typ + "L>"); } HTMLListe("U","eins","zwei","drei"); </script> </body></html> |
Das Beispiel schreibt dynamisch eine HTML-Liste, entweder als Aufzählungsliste oder als numerierte Liste, in die Datei. Dies geschieht in einer Funktion namens HTMLListe(). Unterhalb der Funktion steht der Aufruf der Funktion. Dabei werden vier Parameter übergeben. Erwarten tut die Funktion HTMLListe() jedoch nur einen Parameter, nämlich den Parameter Typ. Dabei sollte man ein U oder ein O übergeben. Abhängig davon erzeugt die Funktion eine <ul>-Liste (Aufzählungsliste) oder eine <ol>-Liste (numerierte Liste).
Innerhalb der Funktion wird jedoch mit HTMLListe.arguments.length die tatsächliche Anzahl der übergebenen Elemente abgefragt. Die Funktion nimmt an, daß alle Parameter ab dem zweiten Elemente der gewünschten Liste sind. Die Funktion schreibt mit document.write()-Befehlen die enstprechenden Listenpunkte und setzt dabei reihenweise die übergebenen Parameter ein, da diese Aktion innerhalb einer for-Schleife erfogt.
Speichert die Argumente, die einer Funktion übergeben wurden, in einem Array, also einer Kette von Elementen. Jedes Element stellt ein Argument dar. Die Eigenschaft ist nur innerhalb der Funktion verfügbar, auf die sie sich bezieht.
<html><head><title>Test</title> </head><body> <script language="JavaScript"> function Test(Name,Vorname) { document.write("Funktion bekam " + Test.arguments.length + " Argumente"); for (var i=0; i<Test.arguments.length; ++i) document.write("<BR>" + Test.arguments[i]); } Test("Muenz", "Stefan"); </script> </body></html> |
Das Beispiel definiert eine Funktion Test(), die zwei Parameter übergeben bekommt. Die Funktion schreibt dynamisch in die HTML-Datei, wie viele Parameter sie erwartet, und danach in einer for-Schleife, welche Werte übergeben wurden.
Mit Funktionsname.arguments.length ermitteln Sie die Anzahl der tatsächlich übergebenen Parameter (nicht die Anzahl der erwarteten Parameter).
Mit Funktionsname.arguments[0] sprechen Sie den Wert des ersten übergebenen Parameters an, mit Funktionsname.arguments[1] den des zweiten Parameters usw.
Speichert die Anzahl Argumente, die eine Funktion erwartet. Die Eigenschaft ist nur außerhalb der Funktion verfügbar, auf die sie sich bezieht. Der Scriptbereich, in dem die Anweisung vorkommt, muß mit JavaScript1.2 ausgezeichnet sein.
<html><head><title>Test</title> <script language="JavaScript1.2"> function Test(Name,Vorname) { return(Vorname + " " + Name); } alert("Funktion erwartet" + Test.arity + " Argumente"); </script> </head><body> </body></html> |
Das Beispiel definiert eine Funktion Test(), die zwei Parameter erwartet. Die Funktion wird im Beispiel gar nicht aufgerufen, dafür wird in einem Meldungsfenster ausgegeben, wie viele Argumente die Funktion Test() erwartet. Dazu wird die Eigenschaft arity auf die gewünschte Funktion angewendet.
Speichert die gesamte Funktion, von der aus die aktuelle Funktion aufgerufen wird. Hat den Wert null, falls der Aufruf direkt von einem Event-Handler oder beim Einlesen der Datei von außerhalb einer anderen Funktion erfolgte. Die Eigenschaft ist nur innerhalb der Funktion verfügbar, auf die sie sich bezieht.
<html><head><title>Test</title> <script language="JavaScript"> function Test() { alert(Test.caller); } function Aufruf() { Test(); } </script> </head><body> <a href="javascript:Aufruf()">Wer ruft Test()?</a> </body></html> |
Das Beispiel definiert im Dateikopf zwei Funktionen, eine Funktion Test() und eine Funktion Aufruf(). Die Funktion Test() tut nichts anderes als auszugeben, von wo sie aufgerufen wurde, die Funktion Aufruf() nichts anderes, als Test() aufzurufen. In der Datei ist ferner ein Verweis notiert. Beim Anklicken des Verweises wird die Funktion Aufruf() aufgerufen, die wiederum Test() aufruft, woraufhin Test() den gesamten Code der Funktion Aufruf() ausgibt.
weiter: | Math |
zurück: | Date |