Zum Inhalt springen

JavaScript

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 6. Juli 2004 um 08:10 Uhr durch 80.185.158.241 (Diskussion) (For ... in-Schleife). Sie kann sich erheblich von der aktuellen Version unterscheiden.





JavaScript ist eine Skriptsprache, die unter dem Namen ECMAScript unter ECMA-262 standardisiert wurde. Die Syntax der Sprache ist ähnlich derjenigen von Java, doch unterscheidet sie sich in der Semantik. JavaScript wurde mit der Intention entwickelt statische HTML-Seiten dynamisch zu gestalten. Im Gegensatz zu serverseitigen Scriptsprachen wie z.B. Perl oder PHP wird JavaScript auf dem Client ausgeführt. Mittels einer Schnittstellen zum Document Object Model (DOM) können Elemente der Webseite manipuliert werden, nachdem diese zum Client übertragen wurde.

Datenstrukturen und Objekte

Eine wichtige Datenstruktur in JavaScript ist das assoziative Array, das in anderen Programmiersprachen "Dictionary" (Smalltalk), "Hash" (Perl) oder "HashMap" (Java) genannt wird.

JavaScript kennt mehrere Arten von eingebauten Objekten wie z.B. Object, Screen, Array, String, Date and Math. Andere Objekte gehören zum DOM (window, form, links etc.).

Eigenschaften oder Methoden von Objekten werden über folgende Notation angesprochen: instanzvariable.feldname bzw. instanzvariable.methodenname.

Eine Übersicht der wichtigsten Eigenschaften und Methoden der einzelnen Objekte:

Screen Objekt

screen.width                         // Bildschirmbreite zurückgeben
screen.height                        // Bildschirmhöhe zurückgeben

Array

arrayname = new Array(1,2,3,4,5,6)	//neues Array anlegen
arrayname.length				//Anzahl der Elemente zurückgeben
arrayname.concat(anderesArray)	//zwei Arrays verbinden
arrayname.join()				//Array in Zeichenkette umwandeln
arrayname.pop()				//letztes Element aus Array löschen
arrayname.push(neuer Wert)		//ein neues Element an das Ende des Array anhängen
arrayname.reverse()				//Reihenfolge der Elemente umkehren

String

...

Date

dateobjekt = new Date()        //neues Date Objekt erzeugen

Math

Math.max(zahl1,zahl2)  //die größere der beiden Zahlen zurückgeben
Math.min(zahl1,zahl2)  //die kleiner der beiden Zahlen zurückgeben
Math.pow(Basiszahl,Exponent)  //Ergebnis der Expotentialrechnung zurückgeben
Math.random()                  //Eine Zufallszahl zwischen 0 und 1 zurückgeben

Window Objekt

window.resizeTo(neueWeite,neueHöhe);        // Fenstergröße einstellen
window.back();                              // vorhergehende Seite anzeigen
window.open("dateiname.htm","Fenstername"); // neues Browser Fenster öffnen


Eigene Objekte kann man mit Hilfe einer Konstruktorfunktion erzeugen. JavaScript ist prototypenbasiert. Weiter können auch Eigenschaften oder Methoden zu einzelnen Objekten zur Laufzeit hinzugefügt werden. Wenn man das für alle gleichartigen Objekte tun will, dann ist die "prototype"-Anweisung zu verwenden.

Kontrollstrukturen

If ... else

  if (Bedingung) {
     Anweisungen;
  }
  else {
     Anweisungen;
  }
  while (Bedingung) {
     Anweisungen;
  }

Do ... while

  do {
    Anweisungen;
  } while (Bedingung);
  for ([Startausdruck]; [Bedingung]; [Inkrementier-Ausdruck]) {
     statements
  }

For ... in-Schleife

Mit dieser Anweisung werden alle Eigenschaften eines Objektes durchlaufen (oder auch alle Elemente eines Feldes).

  for (variable in object) {
     statement

2222

  switch (Ausdruck) {
     case marke1 :
        Anweisungen;
        break;
     case marke2 :
        Anweisungen;
        break;
     default :
        Anweisungen;
  }


Funktionen

Eine Funktion ist ein Block mit einer Liste (ev. auch leer) von Parametern, dem ein Name zugewiesen wird. Eine Funktion kann einen Resultatwert zurückgeben.

  function meineFunktion(param1, param2, param3) {
     Anweisungen;
     return Ausdruck;
  }

Beispiel: Der ursprüngliche Algorithmus von Euklid um den größten gemeinsamen Teiler zu finden. Es ist ein geometrische Lösung: Die kleinere Strecke wird jeweils von der größeren abgezogen.

  function gcd(a, b) {
     while (a != b) { 
        if (a > b) {
           a = a - b;
        } else {
           b = b - a;
        }
     }
     return a;
  }

Die Anzahl Parameter beim Aufruf muss nicht zwingend mit der Anzahl Parameter in der Funktionsdefinition übereinstimmen. Wenn zuwenig Parameter beim Aufruf angegeben werden dann wird für die übrigen Parameter einfach der Wert NULL (stimmt das?) eingesetzt. Weiter kann innerhalb der Funktion auch über den arguments Array auf die Parameter zugegriffen werden.


Benutzerinteraktion

Meist erfolgt die Benutzerinteraktion über HTML-Formulare, auf deren Elemente man über das DOM zugreift. Es gibt jedoch auch einige wenige einfache Arten direkt mit dem Benutzer zu kommunizieren:

Alarm-Dialog

Gibt ein Fenster mit einer Textmeldung aus. Beispiel:

 window.alert('Hallo Welt');

Eingabeaufforderung

Es wird ein Dialog zur Informationseingabe angezeigt. Beispiel:

var eingabe = prompt("Geben Sie einen Text ein","");

andere Interationsmöglichkeiten

Die neueren Versionen von ECMAScript (wie im Internet Explorer 5 und Netscape Navigator 6) verfügen über eine try ... catch Fehlerbehandlungsanweisung.

Die try ... catch ... finally Anweisung fängt Ausnahmen (exceptions) die aufgrund eines Fehlers auftreten oder einer throw-Anweisung auftreten, ab. Die Syntax ist wie folgt:

  try {
     // Anweisungen in denen Ausnahmen auftreten können oder ausgelöst werden können
  } catch(error) {
     // Anweisungsfolge, die im Ausnahmefall ausgeführt wird.
  } finally {
     // Anweisungsfolge, die anschließend in jedem Fall ausgeführt wird.
  }

Zu Beginn werden die Anweisungen im try-Block ausgeführt. Falls eine Ausnahme auftritt, wird der Kontrollfluss sofort zum catch-Block umgeleitet mit dem Ausnahmeobjekt als Parameter.

In Normalfall wird der Ausnahmeblock übersprungen. Nachdem der try-Block ausgeführt ist (auch teilweise) und ggfs. auch der catch-Block werden in jedem Fall auch die Anweisungen im finally-Block ausgeführt.

  try {
     Anweisungen
  }
  catch (err) {
     // Fehlerbehandlung
  }
  finally {
     Anweisungen
  } 

Der finally-Teil kann weggelassen werden

  try {
     Anweisungen
  }
  catch (err) {
     // Fehlerbehandlung
  }

Siehe auch

Literatur