3. Klassen und Objekte in JavaScript 3.1 Browser – Klassen bzw. -Objekte 3.2 HTML – Klassen bzw. -Objekte 3.3 Vordefinierte Klassen 3.4 Nutzerdefinierte Klassen WS 07/08 Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript 3.1 Browser - Klassen bzw. -Objekte JavaScript ist eine objektbasierte Scriptsprache, d.h. 1. JavaScript kennt Klassen und Objekte. Attributwerte der Objekte können auf die übliche Weise verändert werden, z.B.: objektname.attributname = neuer_wert; Methoden werden wie üblich aufgerufen: objektname.methodenname(...); 2. Es fehlen die für objektorientierte Sprachen typischen Konzepte wie Vererbung und Polymorphie. Programmieren für das Web V 2: 24. Oktober 2007 1/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.1 Browser - Klassen bzw. -Objekte Zur Erinnerung (s. auch: http://www.sn.schule.de/~fischer/gw_neu) Klasse: ein „Bauplan“ für gleichartig strukturierte Objekte. Sie wird beschrieben durch ihre Attribute (mit jeweiligem Wertebereich) und ihre Methoden. Objekt: identifizierbare Einheit der Wirklichkeit oder unserer Anschauung. Es wird beschrieben durch seine Attribute (mit konkretem Attributwert). Alle Objekte, die aus einer Klasse erzeugt werden, haben die gleichen Attribute, aber unterschiedliche Attributwerte und verfügen über die gleichen Methoden. Programmieren für das Web V 2: 24. Oktober 2007 2/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript 3.1 Browser - Klassen bzw. -Objekte UML-Notation: Klasse FENSTER hoehe : 10, 20, .... breite : 10, 20, ... ... fenster_vergroessern() fenster_verkleinern() ... Objekt mein_aktuelles_fenster : FENSTER hoehe = 200 breite = 400 ... fenster_vergroessern() fenster_verkleinern() ... Programmieren für das Web V 2: 24. Oktober 2007 3/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.1 Browser - Klassen bzw. -Objekte JavaScript unterscheidet folgende vier Gruppen/Arten von Klassen: • Browser – Klassen bzw. -Objekte: Objekte dieser Klassen werden beim Laden eines HTML-Dokuments automatisch erzeugt. • HTML – Klassen bzw. -Objekte: Objekte dieser Klassen werden durch die entsprechenden HTML-Tags erzeugt. • Vordefinierte Klassen: Objekte dieser Klassen werden i.a. mittels eines Konstruktors erzeugt. Danach kann man auf die in der Klassendefinition festgelegten Attribute und Methoden zugreifen. • Nutzerdefinierte Klassen: Der Programmierer muss zunächst die Klasse definieren (Klassenname, Attributnamen, Methodennamen festlegen und Methoden programmieren). Dann können mittels eines Konstruktors Objekte erzeugt und auf deren Attribute und Methoden zugegriffen werden. Programmieren für das Web V 2: 24. Oktober 2007 4/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu :3.1 Browser - Klassen bzw. -Objekte Wichtige Browser-Klassen bzw. -objekte sind: window, document, location, navigator, ... Beim Laden eines HTML-Dokuments in ein Browserfenster werden für dieses Dokument alle oben genannten und weitere Objekte automatisch erzeugt. Nachfolgend werden ausgewählte Attribute und Methoden der genannten Klassen bzw. Objekte vorgestellt. Programmieren für das Web V 2: 24. Oktober 2007 5/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.1 Browser - Klassen bzw. -Objekte WINDOW toolbar : menubar : scrollbars : locationbar : resizable : top (pageYOffset) : left (pageXOffset) : height (outerHeight) width (outerWidth) : ... yes/no yes/no yes/no yes/no yes/no 10, 20, ... 10, 20, ... : 10, 20, ... 10, 20, ... Beispiele: kap3\k31_01fen.html kap3\k31_02fen.html open(<url>, <name>, open(<url>,<name>[,<attribute>]) [<fensterattribute>]) close() close() prompt(<hinweis>, <eingabetext>) prompt(<eingabetext>, <eingabe>) alert(<text>) alert(<text>) confirm(<text>) print() ... Ein Beispiel für den Aufruf der Methode open(<url>, <name>, [<fensterattribute>]): neuesFenster1 = window.open("","fenster1", "height=300,width=400,resizable=no,top=20,left=20"); Programmieren für das Web V 2: 24. Oktober 2007 6/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.1 Browser - Klassen bzw. -Objekte Die Methoden prompt(<eingabetext>, <eingabe>) und alert(<text>) wurden bereits in einem Beispiel aus Kapitel 1 zur Ein- und Ausgabe genutzt: // Deklaration einer Variablen var na; // Erzeugung eines Eingabefensters und Wertzuweisung na = window.prompt("Geben Sie Ihren Namen ein: ",""); // Ausgabe in einem Meldungsfenster window.alert("Hallo, " + na + "! \n \n" + "Viel Erfolg beim Erstellen interaktiver Webseiten!"); Beispiel: kap1\k1_04alert.html Programmieren für das Web V 2: 24. Oktober 2007 7/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.1 Browser - Klassen bzw. -Objekte Jetzt wird ein komplexeres Beispiel zur Arbeit mit mehreren Fenstern vorgestellt: k31_03fa.html: HTML-Dokument mit Formular zur Addition zweier Brüche k31_03fm.html: HTML-Dokument mit Formular zur Multiplikation zweier Brüche k31_03fstart.html: HTML-Dokument, aus dem per Knopfdruck die beiden obigen Dokumente jeweils in einem neuen Fenster aufgerufen werden Ausschnitt aus dem Quelltext von k31_03fstart.html: function fenster_add() { var fa = open("k31_03fa.html", "f1", "scrollbars=no,toolbar=no,..."); } Beispiele: kap3\k31_03fa.html, kap3\k31_03fm.html, kap3\k31_03fstart.html Programmieren für das Web V 2: 24. Oktober 2007 8/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.1 Browser - Klassen bzw. -Objekte Bisher wurden die vordefinierten Methoden jeweils innerhalb eines JavaScript-Bereiches aufgerufen. Man kann aber z.B. die Methode print() auch aus einem Verweis heraus aufrufen: <a href="javascript:window.print()">Diese Seite drucken</a> Beispiel: kap3\k31_04print.html Programmieren für das Web V 2: 24. Oktober 2007 9/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.1 Browser - Klassen bzw. -Objekte DOCUMENT background : bgColor : fgColor : link : alink : vlink : ... URL eines Bildes blue, ... yellow, ... red, ... green, ... black, ... open() close() clear() write(<text1>, [<...>, ..., <...>]) writeln(<text1>, [<...>, ..., <...>]) ... Die Attribute wurden früher im Body-Tag des Dokuments festgelegt: <body bgColor='yellow'> Die Hintergrundfarbe kann aber auch per Knopfdruck verändert werden: <input type = "button" name = "b_rot" value = " rot" onclick = "document.bgColor='red'"> Beispiele: kap3\k31_05doc.html Programmieren für das Web V 2: 24. Oktober 2007 10/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.1 Browser - Klassen bzw. -Objekte Man kann auch während der Laufzeit Text in ein Dokument in einem neuen Fenster schreiben: (Wichtig: Fenster und danach auch das Dokument öffnen bzw. schließen) var neuesFenster; function erzeugeFenster () { neuesFenster = open("","displayWindow", "height=300,width=300,top=10,left=10,scrollbars=yes"); neuesFenster.document.open(); with (neuesFenster.document) { write("<html><head><title>On the fly</title></head>"); write("<body><h2>On-the-fly</h2>"); write("<hr>Dieses Dokument wurde on-the-fly, "); write("dh. zur Laufzeit, erzeugt."); write("<hr></body></html>"); } neuesFenster.document.close(); } Beispiele: kap3\k31_06doc.html Programmieren für das Web V 2: 24. Oktober 2007 11/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu 3.1 Browser - Klassen bzw. -Objekte LOCATION hash : host : hostname : href : pathname : port : protocol : ..., ..., ..., ..., ..., ..., ..., reload() replace() ..., ... ... ... ... ... ... ... Die Attribute dieses Objekts liefern Informationen über Anker, Teil des Hostnamens, Server, komplette URL, usw. Beispiel: kap3\k31_07loc.html Mittels des Attributs „href“ können auch neue Dokumente geladen werden: var neuesFenster; function laden(adresse) { neuesFenster = open("", "Fenster1","..."); neuesFenster.location.href = adresse; } Beispiele: kap3\k31_08loc.html, kap3\k31_09loc.html Programmieren für das Web V 2: 24. Oktober 2007 12/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu 3.1 Browser - Klassen bzw. -Objekte NAVIGATOR appCodeName : appName : appVersion : userAgent : ... ..., ..., ..., ..., ..., ... ... ... ... Die Attribute dieses Objekts liefern Informationen über den Browser, der momentan lokal benutzt wird. Beispiel: kap3\k31_10nav.html ... Programmieren für das Web V 2: 24. Oktober 2007 13/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript 3.2 HTML - Klassen bzw. -Objekte Alle mittels eines HTML-Tags in einem HTML-Dokument erzeugten Elemente werden von JavaScript als Objekte angesehen, die beim Laden der Seite in ein Browserfenster erzeugt werden. Die wichtigsten davon sind: • Textabsatz: <p>...</p> • Liste: <ul> <li>...</li>...<li>...</li></ul> <ol> <li>...</li>...<li>...</li></ol> • Tabelle: <table>... <tr><th>...</th><th>...</th></tr> <tr><td>...</td><td>...</td></tr> ... </table> • Verweis: <a href = “ • Bild: <img src = “...“ alt=“...“> Programmieren für das Web V 2: 24. Oktober 2007 “>...</a> 14/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.2 HTML - Klassen bzw. -Objekte und Formulare <form action = ““>...</form> mit den verschiedenen Elementen: • Schaltfläche: <input type = “button“ name = “...“ ...> • Einzeiliges Textfeld: <input type = “text“ name = “...“ ...> • Passwortfeld: <input type = “password“ name = “.“ size = “.“ > • Mehrzeiliges Textfeld: <textarea name = “...“> </textarea> • Auswahlliste: <select name = “...“ size = “...“ > <option name = “...“ value = “...“>...</option> ... <option name = “...“ value = “...“>...</option> </select> • Radiobutton: <input type = “radio“ name = “r1“ ... [checked]> • Checkbox: <input type = “checkbox“ name = “r1“...[checked]> Programmieren für das Web V 2: 24. Oktober 2007 15/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.2 HTML - Klassen bzw. -Objekte Alle Objekte, die beim Laden eines HTML-Dokuments erzeugt werden, sind in eine Hierarchie eingeordnet: 1. Stufe: Window-Objekt 2. Stufe: Browser-Objekte: Document, Navigator, ... 3. Stufe: HTML-Objekte: Bilder, Verweise, Formulare 4. Stufe: Formularelemente Beispiel: kap3\k32_01html.html Programmieren für das Web V 2: 24. Oktober 2007 16/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript 3.3 Vordefinierte Klassen Wichtige vordefinierte Klassen sind: Math, Number, String, Date, Array, Function, ... Für diese Klassen sind alle Attribute (mit Wertebereich) und Methoden vordefiniert, d.h. für diese Klassen ist bereits festgelegt: • Name und Wertebereich für jedes Attribut • Name der Methode, Anzahl und Reihenfolge der formalen Parameter der Methoden Bevor man auf Attribute und Methoden zugreifen kann, muss ein Objekt der jeweiligen Klasse mittels eines Konstruktors erzeugt werden (ausser für die Klasse „Math“). Der Zugriff erfolgt dann über objektname.attributname = ...; objektname.methodenname(<liste der aktuellen parameter>); Programmieren für das Web V 2: 24. Oktober 2007 17/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.3 Vordefinierte Klassen Die Klasse „Math“ ermöglicht den Zugriff auf mathematische Konstanten und StandardFunktionen. Es wird kein Konstruktor benötigt, aber beim Aufruf von Attributen und Methoden muss in diesem Fall immer der Klassenname angegeben werden. MATH PI ... abs(<zahl>) ceil(<zahl>) floor(<zahl>) power(<z1>, <z2>) random() round(<zahl>) sin(<zahl>) ... Programmieren für das Web V 2: 24. Oktober 2007 Aufruf verschiedener Standardfunktionen: for (var i = 1; i <= nn; i++) { zz = 1 + (Math.ceil(100 * Math.random()) % 6); write("<tr><td>" + i + "</td>" + "<td>" + zz + " </td></tr>") } Beispiel: kap3\k33_01math.html 18/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.3 Vordefinierte Klassen NUMBER MAX_VALUE: …, … MIN_VALUE: …, … NaN NEGATIVE_INFINITY POSITIVE_INFINITY toString([<basis>]) Konstruktor: var x = new Number(); var y = new Number(3.5); Mittels der Methode „toString()“ kann eine Zahl in eine Zahl in einem anderen Zahlensystem umgewandelt und als Zeichenkette dargestellt werden: function ausgabe(w) { var x = new Number(parseInt(w)); alert("Eingegebene Zahl: " + x + "\n als Zeichenkette: " + x.toString() + "\n\n Zahl zur Basis 2 als Zeichenkette: " + x.toString(2) + "\n Zahl zur Basis 8 als Zeichenkette: " + x.toString(8) + "\n Zahl zur Basis 10 als Zeichenkette: " + x.toString(10) + "\n Zahl zur Basis 16 als Zeichenkette: " + x.toString(16)); } Beispiel: kap3\k33_02number.html Programmieren für das Web V 2: 24. Oktober 2007 19/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.3 Vordefinierte Klassen STRING length: Konstruktor: 1, 2, … charAt(<zahl>) charCodeAt(<zahl>) concat(<string2>) fontcolor(<farbe>) fontsize(<zahl>) indexOf(<string>, <pos>) substr(<pos>, [<laenge>]) toLowerCase() toUpperCase() ... Programmieren für das Web V 2: 24. Oktober 2007 var txt1 = new String(); var txt2 = new String(“Hallo“); Wichtig: Das 1. Zeichen einer Zeichenkette steht immer an der Position 0. Beispiel: kap3\k33_03string.html 20/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.3 Vordefinierte Klassen DATE getDate() getDay() getFullYear() getHours() getMinutes() getMonth() getSeconds() getTime() getYear() setDate(<tag>) setFullYear(<jahr> [,<monat> [,<tag>]]) setHours(<std> [,<min> [,<sek>]]) setMinutes(<min> [,<sek>]) ... Programmieren für das Web V 2: 24. Oktober 2007 Mögliche Aufrufe des Konstruktors: var heute = new Date(); var z1 = new Date(“April 20, 2006 12:00:00“) var z2 = new Date (06, 4, 20); Bemerkungen: getDay() liefert getDate() liefert getMonth() liefert getTime() liefert getYear() liefert getFullYear() liefert 21/29 Zahl: 0 (So) bis 6 (Sa) Tag des Monats (1 bis 31) Zahl: 0 (Jan.) bis 11 (Dez.) Zahl: Millisek. seit 01.01.1970, 0.00 Jahreszahl (i.a. zweistellig) Jahreszahl (vierstellig) © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.3 Vordefinierte Klassen var heute = new Date(); function zeit_anzeigen () { // var heute = new Date(); var std = heute.getHours(); var min = heute.getMinutes(); var zeit; if (min < 10) {zeit = std + ".0" + min;} else {zeit = std + "." + min;} alert("Beim Laden dieser Seite war es " + zeit + " Uhr."); } Aufruf: onclick = "zeit_anzeigen()" Beispiele: kap3\k33_04date.html, kap3\k33_05date.html, kap3\k33_06date.html, kap3\k33_07date.html Programmieren für das Web V 2: 24. Oktober 2007 22/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.3 Vordefinierte Klassen ARRAY length: 0, 1, 2, … concat(<feld>) join(<zeichen>) reverse() sort([<vgl_fkt>]) ... Wichtig: • Bei der Erzeugung eines Objekts der Klasse „Array“ muss man keine maximale Anzahl von Elementen festlegen. • Elemente eines Objekts der Klasse „Array“ können sowohl Zahlen als auch Zeichenketten enthalten. Mögliche Aufrufe des Konstruktors: var feld1 = new Array(); var feld2 = new Array("Anna", 10, "Otto"); Beispiel: kap3\k33_08array.html (Definition zweier Objekte, Attribut, Methode „join(<zeichen>)“) Programmieren für das Web V 2: 24. Oktober 2007 23/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.3 Vordefinierte Klassen Wichtig: • Die Methode „sort()“ sortiert lexikografisch. • Gibt man als aktuellen Parameter der Methode „sort()“ eine Vergleichsfunktion an, so können Zahlen der Größe nach sortiert werden. Beispiele: kap3\k33_09array.html (Sortieren von Namen) kap3\k33_10array.html (Sortieren von Zahlen ohne Vergleichsfunktion) kap3\k33_11array.html (Sortieren von Zahlen mit Vergleichsfunktion) Programmieren für das Web V 2: 24. Oktober 2007 24/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.3 Vordefinierte Klassen Die nachfolgende Prozedur zerlegt die als Zeichenkette übergebene Ziffernfolge in einzelne Ziffern, speichert diese in einem Feld und sortiert anschließend dieses Feld. function auslesen(st){ var a = new Array(); var n = st.length - 1; with (document) { write("<h2> Auslesen von Zahlen aus einem "); write("Eingabe-Textfeld </h2>"); write("Es wurden folgende Ziffern eingelesen: <br>"); for (var j = 0; j <= n; j++){ a[j] = parseInt(st.charAt(j)); write(a[j], " - "); } a.sort(); write("<br><br> Jetzt sind die Ziffern sortiert: <br>"); for (var i = 0; i <= n; i++ ) { write(a[i] , " - ");} } } Beispiel: Programmieren für das Web V 2: 24. Oktober 2007 25/29 kap3\k33_12array.html © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.3 Vordefinierte Klassen Bei jeder Definition einer Funktion oder Prozedur erzeugt JavaScript intern ein Objekt der Klasse „Function“. Neben der bisher benutzten „klassischen“ Funktionsdefinition, gibt es darüber hinaus auch eine Kurzschreibweise: quadratzahl = new Function ("x", "return x * x"); (vgl. MSW Logo: define “quadratzahl [[x] [output :x * :x]) FUNCTION arguments[]: …, … caller: …, … length: …, … Dies hat zur Folge, dass eine Funktion auch eine variable Anzahl von aktuellen Parametern haben kann: Beispiel: kap3\k33_13funct.html toString() Programmieren für das Web V 2: 24. Oktober 2007 26/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript 3.4 Nutzerdefinierte Klassen Bei der Arbeit mit eigenen Klassen und Objekten sind folgende Schritte notwendig: 1. Festlegen von Klassen-, Attribut- und Methodennamen 2. Programmieren der Methoden 3. Erzeugen von Objekten 4. Änderung von Attributwerten oder Aufruf von Methoden Programmieren für das Web V 2: 24. Oktober 2007 // Definition einer neuen Klasse function adresse(name, plz, ort) { // Festlegen der Attribute this.name = name; this.plz = plz; this.ort = ort; // Festlegen der Methode this.ausgabe = ausgabe; } // Definition der Methode function ausgabe() { with (document) { write("<b>Name: </b>"+this.name + " "); write("<b>PLZ: </b>"+this.plz + " "); writeln("<b>Ort: </b>"+this.ort + "<br>"); } } // Instanz erzeugen person1 = new adresse("Timmermann", "01156", "Dresden"); // Methodenaufruf person1.ausgabe(); 27/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.4 Nutzerdefinierte Klassen Beispiele: kap3\k34_01eklasse.html (ein Objekt einer nutzerdefinierten Klasse) kap3\k34_02eklasse.html (mehrere Objekte einer nutzerdefinierten Klasse) // globale Variable var person = new Array(); var i = 0; // Definition einer neuen Klasse ... //Anlegen eines Objekts und Ausgabe der Attributewerte function o_erz(a,b,c,d,e) { person[i] = new Adresse(a,b,c,d,e); document.form1.ausgabe.value = document.form1.ausgabe.value + (i+1) + ". Datensatz: „ + person[i].name + " - „ + person[i].vname + " - „ + person[i].strasse + " - „ + person[i].plz + " - „ + person[i].ort + "\n"; i++; } Beispiel: kap3\k34_02eklasse_sp.html Programmieren für das Web V 2: 24. Oktober 2007 28/29 © Dr. Bettina Timmermann TU-Dresden Browser-Klassen | HTML-Klassen | Vordefinierte Klassen | Nutzerdefinierte Klassen 3. Klassen und Objekte in JavaScript noch zu: 3.4 Nutzerdefinierte Klassen Aber man kann auch zu einer vordefinierten Klasse weitere eigene Methoden hinzufügen. Dazu ist notwendig: 1. Definition der eigenen Methode 2. neue Methode der Klasse hinzufügen 3. Objekt erzeugen 4. Methode aufrufen function datumsAusgabe(){ // Definition einer eigenen Methode tag = this.getDate(); monat = 1 + this.getMonth(); jahr = this.getYear(); if ((jahr > 99) && (jahr < 1900)) jahr += 1900; return tag + "." + monat + "." + jahr; } //neue Methode der Klasse Date hinzufuegen Date.prototype.ausgabe = datumsAusgabe; function teste_ausgabe(){ //Objekt erzeugen var jetzt = new Date(); //Methode aufrufen return jetzt.ausgabe(); } Beispiel: kap3\k34_04emeth.html bzw. auch kap3\k34_03emeth.html Programmieren für das Web V 2: 24. Oktober 2007 29/29 © Dr. Bettina Timmermann TU-Dresden