Suchen und Finden
Service
JavaScript für Enterprise-Entwickler - Professionell programmieren im Browser und auf dem Server
Oliver Ochs
Verlag dpunkt, 2012
ISBN 9783864911279 , 302 Seiten
Format PDF, ePUB, OL
Kopierschutz Wasserzeichen
Inhaltsverzeichnis
16
1 Die Geschichte von JavaScript
26
1.1 JavaScript – die Lingua franca des WWW
26
1.2 Netscape und JavaScript
26
1.3 Das Vorbild Self
27
1.4 Das Vorbild Scheme
28
1.5 JavaScript und ECMAScript
28
1.6 ECMAScript 5th Edition
29
1.7 Harmony
30
1.8 JavaScript und HTML5
30
1.9 New Wave JavaScript
30
1.10 Die JavaScript-Revolution
31
1.11 Zusammenfassung
32
2 JavaScript-Laufzeitumgebungen
34
2.1 JavaScript-Interpreter
34
2.2 Read-Eval-Print-Loop
35
2.3 Der Browser
36
2.4 Headless JavaScript
36
2.5 Rhino
37
2.6 SpiderMonkey, TraceMonkey und JägerMonkey
38
2.7 Google V8
39
2.8 SquirrelFish und Nitro, Microsoft und Opera
40
2.9 Welche Umgebung für welchen Zweck?
40
2.10 Entwicklungsumgebungen
40
2.11 Zusammenfassung
41
3 Core JavaScript
42
3.1 Skriptsprachen
42
3.2 Typen und Werte
43
3.2.1 Schwache Typisierung
43
3.2.2 Literale
43
3.2.3 Typeof-Operator
43
3.2.4 Typenlose Verwendung
44
3.3 Imperative Programmierung
44
3.3.1 Ausdrücke und Operatoren
44
3.3.2 Vergleiche
45
3.3.3 Variablen
45
3.3.4 Blöcke und Gültigkeit von Variablen
46
3.3.5 Zahlen
47
3.3.6 Zeichenketten
48
3.3.7 Boolesche Werte
49
3.3.8 Arrays
49
3.3.9 Reguläre Ausdrücke
50
3.3.10 Kommentare
51
3.3.11 Tokens und Whitespaces
52
3.3.12 Kontrollstrukturen
53
3.3.13 Schleifen
54
3.3.14 Ausnahmebehandlung
56
3.4 Objektliteral
57
3.5 Zusammenfassung
58
4 JavaScript als funktionale Programmiersprache
60
4.1 Funktionsliteral
60
4.2 Funktionsnamen
61
4.3 Parameter und Parametervalidierung
61
4.4 Konfigurationsobjekt als lesbarer Parameter
64
4.5 Anonyme Funktionen
64
4.6 Geltungsbereiche (Scopes)
65
4.7 this
66
4.8 Geschachtelte Scopes und der globale Namensraum
67
4.9 Closures und Module
69
4.10 Funktionale Vererbung
70
4.11 Callbacks
72
4.12 Kaskaden
73
4.13 Rekursion
74
4.14 Funktions-Caching
74
4.15 Currying
75
4.16 Zusammenfassung
75
5 JavaScript als prototypische Programmiersprache
76
5.1 Definition und Verwendung
76
5.2 Duck-Typing
78
5.3 Prototypen
78
5.4 Konstruktoren
80
5.4.1 Kontruktoren und die new-Anweisung
80
5.4.2 Entwurfsmuster für die new-Anweisung
81
5.4.3 Konstruktor- und Prototypreferenz
83
5.5 this
83
5.5.1 Globales Objekt
84
5.5.2 Funktion
84
5.5.3 Methode
84
5.5.4 Konstruktor
84
5.5.5 that
85
5.6 Reflexion
85
5.7 Löschen von Eigenschaften
85
5.8 Zusammenfassung
86
6 JavaScript als objektorientierte Programmiersprache
88
6.1 Objekterzeugungsmuster
88
6.1.1 Rent-a-Constructor
88
6.1.2 Konstruktoren überladen
89
6.1.3 Rent-a-Constructor-and-a-Prototype
89
6.1.4 Referenz auf die Superklasse halten
90
6.2 Existierende Bibliotheken
91
6.2.1 Klassenbasierte Vererbung in Prototype
91
6.2.2 Douglas Crockfords Classical Inheritance in JavaScript
93
6.2.3 John Resigs Simple JavaScript Inheritance
95
6.3 Prototypische Vererbung
97
6.4 Vererbung durch Kopieren
98
6.5 Mixins
99
6.6 Einzelne Methoden wiederverwenden
100
6.7 Objekte in ES5
101
6.7.1 Object.preventExtensions
101
6.7.2 Object.isExtensible
101
6.7.3 Object.seal
102
6.7.4 Object.isSealed
102
6.7.5 Object.freeze
102
6.7.6 Object.isFrozen
102
6.8 Objekteigenschaften in ES5
103
6.8.1 Accessor-Properties
103
6.8.2 Property-Descriptor
103
6.8.3 Object.defineProperty
104
6.8.4 Object.defineProperties
105
6.8.5 Object.getOwnPropertyDescriptor
105
6.8.6 Object.keys
105
6.8.7 Object.getOwnPropertyNames
106
6.8.8 Enumeration
106
6.9 Objekterzeugung in ES5
106
6.10 Bind in ES5
107
6.11 Zusammenfassung
107
7 Eingebaute Objekte
108
7.1 Boolean
109
7.2 Number
109
7.3 String
110
7.4 Array
112
7.4.1 Array-ähnliche Objekte
113
7.4.2 Arrays und reguläre Ausdrücke
113
7.4.3 Arrays und ECMAScript 5th Edition
113
7.5 Date
114
7.6 Math
116
7.7 RegExp
117
7.8 Zusammenfassung
119
8 Entwurfsmuster
120
8.1 Singleton
120
8.2 Iterator
122
8.3 Factory
124
8.4 Strategy
125
8.5 Decorator
126
8.6 Bridge
128
8.7 Facade
129
8.8 Adapter
130
8.9 Proxy
131
8.10 Mediator
132
8.11 Observer
133
8.12 Template-Method
135
8.13 Command
136
8.14 Spooling
140
8.15 Futures und Promises
141
8.16 Fear of Code
143
8.17 Zusammenfassung
143
9 JavaScript im Webbrowser – Teil 1
144
9.1 Sandboxing
144
9.2 Einbettung und Referenzierung
145
9.3 Das Laden der Seite
146
9.4 Das Window-Objekt
147
9.5 Das Document-Objekt
147
9.6 DOM-API
148
9.7 Timer
153
9.8 Events
153
9.9 Zusammenfassung
157
10 JavaScript auf dem Server mit Node
158
10.1 Node-Grundlagen
158
10.1.1 Netzwerkapplikationen
158
10.1.2 Non-Blocking I/O
159
10.1.3 Event-Loop
159
10.1.4 Anwendungsfälle für Node
160
10.2 Node installieren
161
10.3 Hello World in Node
162
10.4 Events
163
10.5 Buffer
166
10.6 Streams
169
10.6.1 Readable Streams
170
10.6.2 Writable Streams
172
10.7 Weitere APIs
174
10.8 Module
174
10.9 Package-Management
177
10.10 Debugging
180
10.11 Beispielapplikation mit dem Express-Framework
182
10.12 Zusammenfassung
195
11 JavaScript im Webbrowser – Teil 2
196
11.1 Formulare
196
11.2 Ajax
199
11.3 Eine Einführung in jQuery
202
11.4 Einführung in jQuery-UI
207
11.4.1 Widgets
207
11.4.2 Interaction-Helpers und Effekte
212
11.4.3 Themeroller
212
11.5 Zusammenfassung
212
12 Build-Automatisierung
214
12.1 Kompilieren
214
12.2 Packaging
215
12.2.1 Assemblierung
215
12.2.2 Minifizierung
216
12.2.3 CommonJS-Module und Pakete
216
12.3 Testing
217
12.4 Linting
217
12.5 Deployment
217
12.6 Dokumentation
217
12.7 Maven
218
12.7.1 wro4j
218
12.7.2 Jasmine-Maven-Plug-in
220
12.7.3 JsDoc-Toolkit-Maven-Plug-in
221
12.8 Weitere Build-Systeme
222
12.9 Require.js
222
12.10 Zusammenfassung
222
13 Testen
224
13.1 Klassisches Testen
224
13.2 User-Interface-Tests
225
13.3 Testgetriebene Entwicklung
225
13.4 Unit Tests
226
13.5 Modultests im Browser
228
13.6 Stand-alone-Unit-Tests mit Jasmine
231
13.7 Verteiltes Testen mit JsTestDriver
236
13.8 Zusammenfassung
239
14 Nachwort
240
Anhang
242
A Referenz Core JavaScript
244
A.1 Anweisungen
244
A.1.1 Leere Anweisung
244
A.1.2 Var-Anweisung
244
A.1.3 Let-Anweisung
244
A.1.4 Const-Anweisung
244
A.1.5 Block-Anweisung
245
A.1.6 Try-Catch-Finally-Block
245
A.1.7 Throw-Anweisung
245
A.1.8 Debugger-Anweisung
245
A.1.9 Return-Anweisung
246
A.2 Ausdrücke und Operatoren
246
A.2.1 Ausdrücke
246
A.2.2 Operatoren
246
A.3 Kontrollstrukturen
250
A.3.1 If-Else-Anweisung
250
A.3.2 Switch-Case-Anweisung
250
A.3.3 While-Anweisung
251
A.3.4 Repeat-Until-Anweisung
251
A.3.5 Do-While-Anweisung
251
A.3.6 For-Anweisung
251
A.3.7 Label-Anweisung
252
A.3.8 Break-Anweisung
252
A.3.9 Continue-Anweisung
253
A.4 Whitespaces
253
A.5 Kommentare
253
A.6 Werte
254
A.7 Literale
254
A.7.1 Number
254
A.7.2 NaN
254
A.7.3 Infinity
255
A.7.4 Formatierung
255
A.7.5 number.toFixed
255
A.7.6 number.toPrecision
255
A.7.7 number.toString
255
A.7.8 number.toExponential
255
A.7.9 parseInt
256
A.7.10 parseFloat
256
A.8 Strings
256
A.9 Boolean
256
A.10 Reguläre Ausdrücke
257
A.11 Array
257
A.12 Objektliterale
258
B Objektreferenz
260
B.1 Boolean
260
B.1.1 Konstruktor
260
B.1.2 Eigenschaften
261
B.1.3 Methoden
261
B.2 Number
261
B.2.1 Konstruktor
261
B.2.2 Eigenschaften
262
B.2.3 Methoden
262
B.3 String
263
B.3.1 Konstruktor
263
B.3.2 Eigenschaften
264
B.3.3 Methoden
264
B.4 Array
269
B.4.1 Konstruktor
269
B.4.2 Eigenschaften
270
B.4.3 Methoden
270
B.5 Date
275
B.5.1 Konstruktor
275
B.5.2 Methoden
276
B.6 Math
280
B.6.1 Konstruktor
280
B.6.2 Konstanten
280
B.6.3 Rundungsfunktionen
281
B.6.4 Filterfunktionen
281
B.6.5 Trigonometrische Funktionen
281
B.6.6 Logarithmische Funktionen
282
B.6.7 Sonstige Funktionen
283
B.7 RegExp
283
B.7.1 Konstruktor
283
B.7.2 Zeichen
283
B.7.3 Eigenschaften
285
B.7.4 Methoden
285
C Namen und Namenskonventionen
288
D JavaScript-Laufzeitumgebungen installieren
290
D.1 Rhino
290
D.2 TraceMonkey
291
D.3 Google V8
292
E Literatur
294
Index
296