SELFHTML/Navigationshilfen JavaScript/DOM Objektreferenz | |
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 Function
-Objekt können Sie extra erzeugen.
var 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.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <script type="text/javascript"> function HTMLListe (Typ) { document.write("<" + Typ + ">"); for (var i = 1; i < HTMLListe.arguments.length; i++) document.write("<li>" + HTMLListe.arguments[i] + "</li>"); document.write("</" + Typ + ">"); } HTMLListe("ol", "eins", "zwei", "drei"); </script> </body></html>
Das Beispiel schreibt dynamisch eine HTML-Liste, entweder als Aufzählungsliste oder als nummerierte Liste, in die Datei. Dies geschieht in einer Funktion namens HTMLListe()
. Unterhalb der Funktion steht der Aufruf der Funktion. Dabei werden vier Parameter übergeben. Die Funktion HTMLListe()
erwartet jedoch nur einen Parameter, nämlich den Parameter Typ
. Dabei sollte man ul
oder ol
übergeben. Abhängig davon erzeugt die Funktion eine Aufzählungsliste oder eine nummerierte Liste.
Innerhalb der Funktion wird jedoch mit HTMLListe.arguments.length
die tatsächliche Anzahl der übergebenen Elemente abgefragt. Die Funktion nimmt an, dass alle Parameter ab dem zweiten Elemente der gewünschten Liste sind. Die Funktion schreibt mit document.write()
-Befehlen die entsprechenden Listenpunkte und setzt dabei reihenweise die übergebenen Parameter ein, da diese Aktion innerhalb einer for
-Schleife erfolgt.
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.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <script type="text/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.
Seit dem JavaScript-Standard Version 1.4 ist arguments
keine Eigenschaft des Funktionsobjekts mehr, sondern steht in der Funktion als lokale Variable zur Verfügung, die Sie einfach über arguments
statt Funktionsobjekt.arguments
ansprechen können.
Speichert die Anzahl Argumente, die eine Funktion erwartet. Die Eigenschaft ist nur außerhalb der Funktion verfügbar, auf die sie sich bezieht.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script type="text/javascript"> 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.
Mit dem JavaScript-Standard Version 1.4 wurde arity
als veraltet erklärt und durch die Eigenschaft length
ersetzt. Diese Eigenschaft können Sie genauso wie arity
verwenden, z.B. Funktionsobjekt.length
.
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.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script type="text/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.
Die caller
-Eigenschaft wurde in JavaScript 1.3 als veraltet ("deprecated") erklärt. Ein Ersatz existiert nicht.
Math | |
Date | |
SELFHTML/Navigationshilfen JavaScript/DOM Objektreferenz |
© 2007 Impressum