JavaScript kurz & gut (eBook)
288 Seiten
O'Reilly Verlag
978-3-86899-389-9 (ISBN)
David Flanagan ist von Hause aus Programmierer, verbringt aber die meiste Zeit damit, über JavaScript und Java zu schreiben. Zu einigem Ruhm innerhalb der Web-Community verhalf ihm das Standardwerk JavaScript - Das umfassende Referenzwerk. Darüber hinaus hat er viele weitere Bücher wie beispielsweise JavaScript - kurz & gut, Java in a Nutshell, Java Examples in a Nutshell und Java Power Reference verfasst. David hat einen Abschluss in Informatik und Ingenieurwissenschaft vom Massachusetts Institute of Technology. Er lebt mit seiner Frau Christie und seinen Kindern im Nordwesten der USA in der Nähe der Grenze zu Kanada, zwischen den Städten Seattle, Washington und Vancouver, British Columbia.
David Flanagan ist von Hause aus Programmierer, verbringt aber die meiste Zeit damit, über JavaScript und Java zu schreiben. Zu einigem Ruhm innerhalb der Web-Community verhalf ihm das Standardwerk JavaScript - Das umfassende Referenzwerk. Darüber hinaus hat er viele weitere Bücher wie beispielsweise JavaScript - kurz & gut, Java in a Nutshell, Java Examples in a Nutshell und Java Power Reference verfasst. David hat einen Abschluss in Informatik und Ingenieurwissenschaft vom Massachusetts Institute of Technology. Er lebt mit seiner Frau Christie und seinen Kindern im Nordwesten der USA in der Nähe der Grenze zu Kanada, zwischen den Städten Seattle, Washington und Vancouver, British Columbia.
Inhalt 5
Vorwort 9
Typografische Konventionen 11
Nutzung der Codebeispiele 11
Danksagungen 12
Kapitel 1 – Die lexikalische Struktur 13
Kommentare 13
Bezeichner und reservierte Wörter 14
Optionale Semikola 15
Kapitel 2 – Typen, Werte und Variablen 17
Zahlen 18
Text 21
Stringliterale 22
Boolesche Werte 24
null und undefined 26
Das globale Objekt 27
Typumwandlungen 28
Variablendeklaration 33
Kapitel 3 – Ausdrücke und Operatoren 37
Ausdrücke 38
Initialisierer 38
Auf Eigenschaften zugreifen 40
Funktionsdefinition 41
Aufruf 41
Objekterstellung 42
Operatoren 43
Arithmetische Operatoren 46
Relationale Operatoren 51
Logische Ausdrücke 54
Zuweisungsausdrücke 57
Auswertungsausdrücke 58
Verschiedene Operatoren 60
Der Bedingungsoperator (?:) 60
Der typeof-Operator 61
Der delete-Operator 61
Der void-Operator 62
Der Kommaoperator (,) 62
Kapitel 4 – Anweisungen 63
Ausdrucksanweisungen 65
Zusammengesetzte und leere Anweisungen 66
Deklarationsanweisungen 67
var 67
function 68
Bedingungen 69
if 70
else if 71
switch 72
Schleifen 74
while 74
do/while 75
for 75
for/in 77
Sprünge 78
Markierte Anweisungen 79
break 79
continue 80
return 81
throw 82
try/catch/finally 83
Verschiedene Anweisungen 85
with 85
debugger 86
“use strict« 86
Kapitel 5 – Objekte 89
Objekte erstellen 90
Objektliterale 90
Objekte mit new erstellen 91
Prototypen 91
Object.create() 92
Eigenschaften 94
Eigenschaften abfragen und setzen 94
Vererbung von Eigenschaften 94
Eigenschaften löschen 95
Eigenschaften prüfen 96
Eigenschaften enumerieren 98
Eigenschaften und Objekte serialisieren 99
Eigenschafts-Getter und -Setter 100
Eigenschaftsattribute 102
Objektattribute 105
Das prototype-Attribut 105
Das class-Attribut 106
Das extensible-Attribut 107
Kapitel 6 – Arrays 109
Arrays erstellen 110
Array-Elemente und -Länge 111
Arrays durchlaufen 113
Mehrdimensionale Arrays 114
Array-Methoden 114
join() 114
reverse() 115
sort() 115
concat() 116
slice() 117
splice() 117
push() and pop() 118
unshift() und shift() 118
toString() 119
ECMAScript 5-Array-Methoden 119
forEach() 120
map() 120
filter() 120
every() und some() 121
reduce(), reduceRight() 121
indexOf() und lastIndexOf() 123
Der Array-Typ 123
Array-artige Objekte 124
Strings als Arrays 125
Kapitel 7 – Funktionen 127
Funktionen definieren 128
Geschachtelte Funktionen 131
Funktionen aufrufen 131
Funktionsaufruf 132
Methodenaufruf 133
Konstruktoraufruf 135
Indirekter Aufruf 136
Funktionsargumente und -parameter 138
Optionale Parameter 138
Argumentlisten variabler Länge: Das Arguments-Objekt 139
Funktionen als Namensräume 141
Closures 142
Funktionseigenschaften, -methoden und -konstruktoren 147
Die length-Eigenschaft 147
Die prototype-Eigenschaft 147
Die bind()-Methode 148
Die toString()-Methode 149
Der Function()-Konstruktor 149
Kapitel 8 – Klassen 151
Klassen und Prototypen 152
Klassen und Konstruktoren 154
Konstruktoren und Klassenidentität 157
Die constructor-Eigenschaft 157
Java-artige Klassen in JavaScript 159
Unveränderliche Klassen 162
Unterklassen 163
Klassen erweitern 165
Kapitel 9 – Reguläre Ausdrücke 167
Suchmuster mit regulären Ausdrücken definieren 167
Literale Zeichen 168
Zeichenklassen 169
Wiederholung 170
Nicht-gierige Wiederholung 171
Alternierung, Gruppierung und Referenzierung 171
Die Position des Treffers angeben 173
Schalter 175
Mustervergleiche mit regulären Ausdrücken 176
Stringmethoden für Mustervergleiche 176
RegExp-Eigenschaften und -Methoden 178
Kapitel 10 – Clientseitiges JavaScript 181
JavaScript in HTML einbetten 181
Event-gesteuerte Programmierung 183
Das Window-Objekt 183
Timer 184
Browser-Location und Navigation 185
Browser-Verlauf 186
Browser- und Bildschirm-Informationen 187
Dialogfenster 189
Document-Elemente als Window-Eigenschaften 190
Mehrere Fenster und Frames 190
Beziehungen zwischen Frames 191
JavaScript in interagierenden Fenstern 193
Die Same-Origin-Policy 195
Kapitel 11 – Dokumente skripten 197
Übersicht über das DOM 197
Dokument-Elemente auswählen 200
Elemente über ihre ID auswählen 200
Elemente über ihren Namen auswählen 201
Elemente über ihren Typ auswählen 202
Elemente über die CSS-Klasse auswählen 204
Elemente über CSS-Selektoren auswählen 205
Dokumentenstruktur und -durchlauf 207
Attribute 209
Element-Inhalt 211
Element-Inhalt als HTML 212
Element-Inhalt als einfacher Text 212
Element-Inhalt als Text-Knoten 213
Knoten erstellen, einfügen und löschen 213
Element Style 216
Geometrie und Scrolling 220
Kapitel 12 – Events 225
Event-Typen 227
Formular-Events 227
Window-Events 228
Maus-Events 229
Tastatur-Events 231
HTML5-Events 231
Touchscreen- und Mobil-Events 234
Event-Handler registrieren 235
Event-Handler-Eigenschaften setzen 236
Event-Handler-Attribute setzen 236
addEventListener() 237
Aufruf eines Event-Handlers 239
Argument eines Event-Handlers 239
Kontext 240
Geltungsbereich 240
Der Rückgabewert des Handlers 241
Event-Propagation 242
Event-Cancellation 243
Kapitel 13 – Netzwerkverbindungen 245
XMLHttpRequest verwenden 245
Den Request definieren 247
Die Response erhalten 249
HTTP-Progress-Events 251
Cross-Origin-HTTP-Requests 252
HTTP per : JSONP 253
Server-Sent Events 257
WebSockets 258
Kapitel 14 – Clientseitiger Speicher 261
localStorage und sessionStorage 262
Lebensdauer und Geltungsbereich des Speichers 264
Storage-API 265
Storage-Events 266
Cookies 268
Cookie-Attribute: Lebensdauer und Geltungsbereich 268
Cookies speichern 270
Cookies lesen 272
Grenzen der Cookies 273
Index 275
Chapter 3. Ausdrücke und Operatoren
Ein Ausdruck ist eine JavaScript-Äußerung, die der JavaScript-Interpreter auswerten kann, um einen Wert hervorzubringen. Eine Konstante, die direkt in Ihr Programm eingebettet ist, ist eine sehr einfache Art von Ausdruck. Ein Variablenname ist ebenfalls ein einfacher Ausdruck, der zu dem Wert ausgewertet wird, der dieser Variable zugewiesen wurde. Komplexe Ausdrücke werden aus einfacheren Ausdrücken aufgebaut. Ein Array-Zugriffsausdruck besteht beispielsweise aus einem Ausdruck, der zu einem Array ausgewertet wird, auf den eine öffnende eckige Klammer folgt, dann aus einem Ausdruck, der zu einer ganzen Zahl ausgewertet wird, und schließlich aus einer schließenden eckigen Klammer. Dieser neue, komplexere Ausdruck wird zu dem Wert ausgewertet, der unter dem entsprechenden Index im angegebenen Array gespeichert ist. Ähnlich besteht ein Funktionsaufruf aus einem Ausdruck, der zu einem Funktionsobjekt ausgewertet wird, und null oder mehr zusätzlichen Ausdrücken in einer Klammer, die als die Argumente für die Funktion verwendet werden.
Am häufigsten setzt man für den Aufbau komplexer Ausdrücke aus einfachen Ausdrücken Operatoren ein. Ein Operator kombiniert die Werte seiner Operanden (üblicherweise zwei) auf bestimmte Weise und wird zu einem neuen Wert ausgewertet. Der Multiplikationsoperator *
ist ein einfaches Beispiel. Der Ausdruck x * y
wird zum Produkt der Werte der Ausdrücke x
und y
ausgewertet. Der Einfachheit halber sagen wir gelegentlich, dass ein Operator einen Wert zurückliefert, nicht »er wird zu einem Wert ausgewertet«.
Ausdrücke
Die einfachsten Ausdrücke, die auch als elementare Ausdrücke bezeichnet werden, sind die, die eigenständig sind – d.h., sie können nicht in weitere elementare Ausdrücke zerlegt werden. Elementare Ausdrücke sind in JavaScript konstante oder literale Werte, einige Schlüsselwörter der Sprache und Variablenreferenzen.
Literale sind konstante Werte, die unmittelbar in Ihr Programm eingebettet sind. Sie sehen beispielsweise so aus:
1.23 // Ein Zahlliteral "hello" // Ein Stringliteral /pattern/ // Ein Regex-LiteralReservierte Wörter wie true
, false
, null
und this
gelten ebenfalls als elementare Ausdrücke.
Die dritte Art von elementarem Ausdruck schließlich sind einfache Variablenreferenzen:
i // Wird zum Wert der Variablen i ausgewertet. sum // Wird zum Wert der Variablen sum ausgewertet.Erscheint ein Bezeichner unabhängig in einem Programm, geht JavaScript davon aus, dass es sich um eine Variable handelt. Gibt es keine Variable dieses Namens, wird der Ausdruck zum Wert undefined
ausgewertet. Im Strict-Modus von ECMAScript 5 führt der Versuch, eine Variable auszuwerten, die es nicht gibt, stattdessen jedoch zu einem ReferenceError.
Initialisierer
Objekt- und Array-Initialisierer sind Ausdrücke, deren Wert ein neu erzeugtes Objekt oder Array ist. Diese Initialisierungsausdrücke werden gelegentlich auch als »Objektliterale« und »Array-Literale« bezeichnet. Im Unterschied zu echten Literalen sind diese jedoch keine elementaren Ausdrücke, weil sie mehrere Teilausdrücke enthalten, die Eigenschafts- und Elementwerte angeben.
Ein Array-Initialisierer ist eine durch Kommata getrennte Liste von Ausdrücken in eckigen Klammern. Der Wert eines Array-Initialisierers ist ein neu erzeugtes Array. Die Elemente dieses neuen Arrays sind auf die Werte der durch Kommata getrennten Ausdrücke initialisiert:
[] // Ein leeres Array [1+2,3+4] // Ein Array mit zwei Elementen. Das erste Element ist // 3, das zweite 7.Die Elementausdrücke in einem Array-Initialisierer können selbst auch wieder Array-Initialisierer sein, was bedeutet, dass diese Ausdrücke geschachtelte Arrays erstellen können:
var matrix = [[1,2,3], [4,5,6], [7,8,9]];Nach dem letzten Ausdruck in einem Array-Initialisierer ist ein nachstehendes Komma erlaubt.
Objektinitialisierungsausdrücke ähneln Array-Initialisierungsausdrücken, stehen statt in eckigen Klammern aber in geschweiften Klammern. Außerdem werden jedem Teilausdruck ein Eigenschaftsname und ein Doppelpunkt vorangestellt:
var p = { x:2, y:1 }; // Ein Objekt mit zwei Eigenschaften. var q = {}; // Ein leeres Objekt ohne // Eigenschaften. q.x = 2; q.y = 1; // Jetzt hat q die gleichen // Eigenschaften wie p.Objektliterale können ebenfalls geschachtelt werden. Zum Beispiel:
var rectangle = { upperLeft: { x: 2, y: 2 }, lowerRight: { x: 4, y: 5 } };Die Ausdrücke in Objekt- und Array-Initialisierern werden jedes Mal ausgewertet, wenn der Objektinitialisierer ausgewertet wird und müssen keine konstanten Werte haben: Es können beliebige JavaScript-Ausdrücke sein. Außerdem können die Eigenschaftsnamen in Objektliteralen Zeichenketten (mit impliziten Anführungszeichen) statt Bezeichner sein (was nützlich sein kann, wenn man Eigenschaftsnamen angeben muss, die reservierte Wörter sind oder die aus anderem Grund keine zulässigen Bezeichner darstellen):
var side = 1; var square = { "ul": { x: p.x, y: p.y }, 'lr': { x: p.x + side, y: p.y + side}};Auf Eigenschaften zugreifen
Der Eigenschaftszugriffsausdruck wird zum Wert einer Objekteigenschaft oder eines Array-Elements ausgewertet. JavaScript definiert zwei Syntaxformen für den Eigenschaftszugriff:
Ausdruck
. Bezeichner Ausdruck [ Ausdruck ] Bei der ersten Art des Eigenschaftszugriffs wird ein Ausdruck genutzt, auf den ein Punkt und dann ein Bezeichner folgen. Der Ausdruck gibt das Objekt an und der Bezeichner den Namen der gewünschten Eigenschaft. Bei der zweiten Art des Eigenschaftszugriffs folgt auf den ersten Ausdruck (das Objekt oder Array) ein weiterer Ausdruck in eckigen Klammern. Dieser zweite Ausdruck gibt den Namen der gewünschten Eigenschaft oder den Index des gewünschten Array-Elements an. Hier sind einige konkrete Beispiele:
var o = {x:1,y:{z:3}}; // Ein Beispielobjekt. var a = [o,4,[5,6]]; // Ein Array, das o enthält. o.x // => 1: Eigenschaft x des Ausdrucks o. o.y.z // => 3: Eigenschaft z des Ausdrucks o.y. o["x"] // => 1: Eigenschaft x des Objekts o. a[1] // => 4: Das Element beim Index 1 des // Ausdrucks a. a[2]["1"] // => 6: Das Element beim Index 1 des // Ausdrucks a[2]. a[0].x // => 1: Eigenschaft x des Ausdrucks a[0].Die .Bezeichner
-Syntax ist die einfachere der beiden Optionen für den Eigenschaftszugriff. Beachten Sie jedoch, dass sie nur eingesetzt werden kann, wenn die Eigenschaft, auf die Sie zugreifen wollen, einen Namen hat, der ein zulässiger Bezeichnername ist, und wenn Sie den Namen des Bezeichners bereits beim Schreiben des Programms kennen. Wenn der Eigenschaftsname einem reservierten Wort entspricht, Leerzeichen oder Interpunktionszeichen enthält oder eine Zahl ist (bei Arrays), müssen Sie die Notation mit den eckigen Klammern verwenden. Eckige Klammern werden auch genutzt, wenn der Eigenschaftsname nicht statisch, sondern selbst das Ergebnis einer Berechnung ist.
Funktionsdefinition
Ein Funktionsdefinitionsausdruck definiert eine JavaScript-Funktion, und der Wert eines solchen Ausdrucks ist die neu definierte Funktion. In gewisser Weise ist ein Funktionsdefinitionsausdruck ein »Funktionsliteral«, ähnlich wie ein Objektinitialisierer ein »Objektliteral« ist. Ein Funktionsdefinitionsausdruck besteht üblicherweise aus dem Schlüsselwort function
, einer kommaseparierten Liste weiterer Bezeichner (den Parameternamen) in Klammern und einem Block JavaScript-Code (dem Funktionsrumpf) in geschweiften Klammern. Zum Beispiel:
Funktionen können auch mit einer Funktionsanweisung statt einem Funktionsausdruck definiert werden. Vollständige Informationen zu Funktionsdefinitionen finden Sie in Chapter 7.
Aufruf
Als Aufrufausdruck bezeichnet man JavaScripts Syntax für den Aufruf (oder die Ausführung) einer Funktion oder Methode. Sie beginnt mit einem Funktionsausdruck, der die aufzurufende Funktion bezeichnet. Auf den Funktionsausdruck folgen eine öffnende Klammer, eine kommagetrennte Liste mit null oder mehr Argumenten und eine schließende Klammer. Ein paar Beispiele:
f(0) // f ist der Funktionsausdruck; // 0 ist der Argumentausdruck. Math.max(x,y,z) // Math.max ist die Funktion; // x, y und z sind die Argumente. a.sort() // a.sort ist die Funktion; es gibt // keine Argumente.Wird ein Aufrufausdruck ausgewertet, wird zuerst der Funktionsausdruck ausgewertet. Anschließend werden die Argumentausdrücke ausgewertet, um...
Erscheint lt. Verlag | 3.10.2012 |
---|---|
Verlagsort | Heidelberg |
Sprache | deutsch |
Themenwelt | Mathematik / Informatik ► Informatik ► Betriebssysteme / Server |
Mathematik / Informatik ► Informatik ► Programmiersprachen / -werkzeuge | |
Schlagworte | Skriptsprache • Web • Web-Entwicklung • Web-Programmierung |
ISBN-10 | 3-86899-389-4 / 3868993894 |
ISBN-13 | 978-3-86899-389-9 / 9783868993899 |
Haben Sie eine Frage zum Produkt? |
Größe: 2,4 MB
Digital Rights Management: ohne DRM
Dieses eBook enthält kein DRM oder Kopierschutz. Eine Weitergabe an Dritte ist jedoch rechtlich nicht zulässig, weil Sie beim Kauf nur die Rechte an der persönlichen Nutzung erwerben.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.
Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
Größe: 2,3 MB
Digital Rights Management: ohne DRM
Dieses eBook enthält kein DRM oder Kopierschutz. Eine Weitergabe an Dritte ist jedoch rechtlich nicht zulässig, weil Sie beim Kauf nur die Rechte an der persönlichen Nutzung erwerben.
Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belletristik und Sachbüchern. Der Fließtext wird dynamisch an die Display- und Schriftgröße angepasst. Auch für mobile Lesegeräte ist EPUB daher gut geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür eine kostenlose App.
Geräteliste und zusätzliche Hinweise
Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich