JavaScript – Das Handbuch für die Praxis
Реклама. ООО «ЛитРес», ИНН: 7719571260.
Оглавление
David Flanagan. JavaScript – Das Handbuch für die Praxis
Lob für JavaScript: Das Handbuch für die Praxis, siebte Auflage
JavaScript – Das Handbuch für die Praxis
Inhalt
Vorwort
Konventionen, die in diesem Buch verwendet werden
Beispielcode
O’Reilly Online-Lernen
Danksagungen
KAPITEL 1. Einführung in JavaScript
JavaScript: Namen, Versionen und Modi
1.1JavaScript erkunden
1.2Hello World
1.3Ein Rundgang durch JavaScript
Kommentarsyntax in Codebeispielen
1.4Beispiel: Häufigkeitshistogramme
Beispiel 1-1: Berechnung von Häufigkeitshistogrammen mit JavaScript
1.5Zusammenfassung
KAPITEL 2. Die lexikalische Struktur
2.1Der Text eines JavaScript-Programms
2.2Kommentare
2.3Literale
2.4Identifier und reservierte Wörter
2.4.1Reservierte Wörter
2.5Unicode
2.5.1Unicode-Escape-Sequenzen
2.5.2Unicode-Normalisierung
2.6Optionale Semikola
2.7Zusammenfassung
KAPITEL 3. Typen, Werte und Variablen
3.1Übersicht und Definitionen
3.2Zahlen
3.2.1Ganzzahlliterale
3.2.2Gleitkommaliterale
Trennzeichen in Zahlliteralen
3.2.3Arithmetik in JavaScript
3.2.4Binäre Gleitkomma- und Rundungsfehler
3.2.5Langzahlarithmetik mit BigInt
3.2.6Datum und Uhrzeit
3.3Text
Zeichen, Codepoints und JavaScript-Strings
3.3.1String-Literale
3.3.2Escape-Sequenzen in String-Literalen
3.3.3Mit Strings arbeiten
3.3.4Template-Literale
Getaggte Template-Literale
3.3.5Mustervergleiche
3.4Boolesche Werte
3.5null und undefined
3.6Symbole
3.7Das globale Objekt
3.8Unveränderbare primitive Werte und veränderbare Objektreferenzen
3.9Typumwandlungen
3.9.1Umwandlungen und Gleichheit
3.9.2Explizite Umwandlung
3.9.3Umwandlung von Objekten in primitive Datentypen
Umwandlung von Objekten in boolesche Werte
Umwandlung von Objekten in Strings
Umwandlung von Objekten in Zahlen
Umwandlungen durch einige spezielle Operatoren
Die Methoden toString() und valueOf()
Algorithmen zur Umwandlung von Objekten in primitive Datentypen
3.10Variablendeklaration und -zuweisung
3.10.1Deklarationen mit let und const
Geltungsbereich von Variablen und Konstanten
Wiederholte Deklarationen
Deklarationen und Typen
3.10.2Variablendeklarationen mit var
3.10.3Destrukturierende Zuweisung
Komplexe Destrukturierung verstehen
3.11Zusammenfassung
KAPITEL 4. Ausdrücke und Operatoren
4.1Elementare Ausdrücke
4.2Initialisierungsausdrücke von Objekten und Arrays
4.3Ausdrücke zur Funktionsdefinition
4.4Ausdrücke für den Eigenschaftszugriff
4.4.1Bedingter Zugriff auf Eigenschaften
4.5Aufrufausdrücke
4.5.1Bedingter Aufruf
4.6Ausdrücke zur Objekterstellung
4.7Operatoren im Überblick
4.7.1Anzahl an Operanden
4.7.2Operanden und Ergebnistyp
4.7.3Seiteneffekte von Operatoren
4.7.4Vorrang von Operatoren
4.7.5Operatorassoziativität
4.7.6Reihenfolge der Auswertung
4.8Arithmetische Ausdrücke
4.8.1Der +-Operator
4.8.2Unäre arithmetische Operatoren
4.8.3Bitweise Operatoren
4.9Relationale Ausdrücke
4.9.1Gleichheits- und Ungleichheitsoperatoren
Die Operatoren =, == und ===
Strikte Gleichheit
Gleichheit mit Typumwandlung
4.9.2Vergleichsoperatoren
4.9.3Der in-Operator
4.9.4Der instanceof-Operator
4.10Logische Ausdrücke
4.10.1Logisches UND (&&)
4.10.2Logisches ODER (||)
4.10.3Logisches NICHT (!)
4.11Zuweisungsausdrücke
4.11.1Zuweisung mit Operation
4.12Auswertungsausdrücke
Ist eval() eine Funktion oder ein Operator?
4.12.1eval()
4.12.2Globales eval()
4.12.3eval() im strict-Modus
4.13Weitere Operatoren
4.13.1Der Bedingungsoperator (?:)
4.13.2?? – der Erstdefiniert-Operator
4.13.3Der typeof-Operator
4.13.4Der delete-Operator
4.13.5Der await-Operator
4.13.6Der void-Operator
4.13.7Der Kommaoperator (,)
4.14Zusammenfassung
KAPITEL 5. Anweisungen
5.1Anweisungsausdrücke
5.2Zusammengesetzte und leere Anweisungen
5.3Bedingungen
5.3.1if
5.3.2else if
5.3.3switch
5.4Schleifen
5.4.1while
5.4.2do/while
5.4.3for
5.4.4for/of
for/of mit Objekten
for/of mit Strings
for/of mit Set und Map
Asynchrone Iteration mit for/await
5.4.5for/in
5.5Sprünge
5.5.1Benannte Anweisungen
5.5.2break
5.5.3continue
5.5.4return
5.5.5yield
5.5.6throw
5.5.7try/catch/finally
»Nackte« catch-Klausel
5.6Verschiedene Anweisungen
5.6.1with
5.6.2debugger
5.6.3"use strict"
5.7Deklarationen
5.7.1const, let und var
5.7.2function
5.7.3class
5.7.4import und export
5.8Zusammenfassung
KAPITEL 6. Objekte
6.1Einführung in Objekte
6.2Objekte erstellen
6.2.1Objektliterale
6.2.2Objekte mit dem Schlüsselwort new erstellen
6.2.3Prototypen
6.2.4Object.create()
6.3Eigenschaften abfragen und zuweisen
6.3.1Objekte als assoziative Arrays
6.3.2Vererbung
6.3.3Fehlerquellen beim Eigenschaftszugriff
6.4Eigenschaften löschen
6.5Eigenschaften prüfen
6.6Eigenschaften aufzählen
6.6.1Reihenfolge der Eigenschaftsaufzählung
6.7Objekte erweitern
6.8Objekte serialisieren
6.9Objektmethoden
6.9.1Die toString()-Methode
6.9.2Die toLocaleString()-Methode
6.9.3Die valueOf()-Methode
6.9.4Die toJSON()-Methode
6.10Erweiterte Syntax für Objektliterale
6.10.1Kurzschriftsyntax für Eigenschaften
6.10.2Berechnete Eigenschaftsnamen
6.10.3Symbole als Eigenschaftsnamen
6.10.4Der Spread-Operator
6.10.5Kurzschriftsyntax für Methoden
6.10.6Eigenschafts-Getter und -Setter
6.11Zusammenfassung
KAPITEL 7. Arrays
7.1Arrays erstellen
7.1.1Array-Literale
7.1.2Der Spread-Operator
7.1.3Der Array()-Konstruktor
7.1.4Array.of()
7.1.5Array.from()
7.2Array-Elemente lesen und schreiben
7.3Sparse-Arrays
7.4Array-Länge
7.5Array-Elemente hinzufügen und löschen
7.6Über Arrays iterieren
7.7Mehrdimensionale Arrays
7.8Array-Methoden
7.8.1Array-Iteratormethoden
forEach()
map()
filter()
find() und findIndex()
every() und some()
reduce() und reduceRight()
7.8.2Arrays mit flat() und flatMap() »verflachen«
7.8.3Arrays mit concat() verketten
7.8.4Stacks und Queues mit push(), pop(), shift() und unshift()
7.8.5Subarrays mit slice(), splice(), fill() und copyWithin()
slice()
splice()
fill()
copyWithin()
7.8.6Such- und Sortiermethoden für Arrays
indexOf() und lastIndexOf()
includes()
sort()
reverse()
7.8.7Arrays in Strings umwandeln
7.8.8Statische Array-Funktionen
7.9Arrayartige Objekte
7.10Strings als Arrays
7.11Zusammenfassung
KAPITEL 8. Funktionen
8.1Funktionen definieren
8.1.1Funktionsdeklarationen
8.1.2Funktionsausdrücke
8.1.3Pfeilfunktionen
8.1.4Verschachtelte Funktionen
8.2Funktionen aufrufen
8.2.1Aufruf als Funktion
Bedingungsabhängiger Aufruf
Rekursive Funktionen und der Stack
8.2.2Aufruf als Methode
Methoden verketten
8.2.3Aufruf als Konstruktor
8.2.4Indirekter Aufruf
8.2.5Impliziter Funktionsaufruf
8.3Funktionsargumente und -parameter
8.3.1Optionale Parameter und Standardwerte
8.3.2Restparameter und Argumentlisten mit variabler Länge
8.3.3Das Arguments-Objekt
8.3.4Der Spread-Operator für Funktionsaufrufe
8.3.5Funktionsargumente in Parameter destrukturieren
8.3.6Argumenttypen
8.4Funktionen als Werte
Beispiel 8-1: Funktionen als Daten verwenden
8.4.1Eigene Funktionseigenschaften definieren
8.5Funktionen als Namensräume
8.6Closures
Beispiel 8-2: Methoden für den Zugriff auf private Eigenschaften anhand von Closures
8.7Funktionseigenschaften, -methoden und -konstruktoren
8.7.1Die Eigenschaft length
8.7.2Die Eigenschaft name
8.7.3Die Eigenschaft prototype
8.7.4Die Methoden call() und apply()
8.7.5Die bind()-Methode
8.7.6Die Methode toString()
8.7.7Der Konstruktor Function()
8.8Funktionale Programmierung
8.8.1Arrays mit Funktionen bearbeiten
8.8.2Funktionen höherer Ordnung
8.8.3Teilweise Anwendung von Funktionen
8.8.4Memoisierung
8.9Zusammenfassung
KAPITEL 9. Klassen
9.1Klassen und Prototypen
Beispiel 9-1: Eine einfache JavaScript-Klasse
9.2Klassen und Konstruktoren
Beispiel 9-2: Eine Range-Klasse unter Verwendung eines Konstruktors
Konstruktoren und new.target
9.2.1Konstruktoren, Klassenidentität und instanceof
9.2.2Die constructor-Eigenschaft
9.3Klassen erstellen mit dem Schlüsselwort class
Beispiel 9-3: Erstellung der Range-Klasse unter Verwendung von class
9.3.1Statische Methoden
9.3.2Getter, Setter und andere Methodenformen
9.3.3Öffentliche, private und statische Felder
9.3.4Beispiel: Eine Klasse für komplexe Zahlen
Beispiel 9-4: Complex.js: Eine Klasse für komplexe Zahlen
9.4Existierende Klassen um Methoden erweitern
9.5Subklassen
9.5.1Subklassen und Prototypen
Beispiel 9-5: Span.js: Eine einfache Subklasse von Range
9.5.2Subklassen mit extends und super
Beispiel 9-6: TypedMap.js: Eine Subklasse von Map, die die Typen von Schlüsseln und Werten überprüft
9.5.3Delegation statt Vererbung
Beispiel 9-7: Histogram.js: Eine Set-artige Klasse, implementiert mithilfe von Delegation
9.5.4Klassenhierarchien und abstrakte Klassen
Beispiel 9-8: Sets.js: Eine Hierarchie abstrakter und konkreter Set-Klassen
9.6Zusammenfassung
KAPITEL 10. Module
10.1Module mit Klassen, Objekten und Closures
10.1.1Closure-basierte Modularität automatisieren
10.2Module in Node
10.2.1Node-Exporte
10.2.2Node-Importe
10.2.3Der Node-Modulstil im Web
10.3Module in ES6
10.3.1ES6-Exporte
10.3.2ES6-Importe
10.3.3Werte beim Im- und Export umbenennen
10.3.4Re-Exporte
10.3.5JavaScript-Module und das Web
10.3.6Dynamische Importe mit import()
10.3.7import.meta.url
10.4Zusammenfassung
KAPITEL 11. Die JavaScript-Standardbibliothek
11.1Sets und Maps
11.1.1Die Set-Klasse
11.1.2Die Map-Klasse
11.1.3WeakMap und WeakSet
11.2Typisierte Arrays und binäre Daten
11.2.1Typen typisierter Arrays
11.2.2Typisierte Arrays erstellen
11.2.3Typisierte Arrays verwenden
11.2.4Methoden und Eigenschaften für typisierte Arrays
11.2.5DataView und Byte-Reihenfolge
11.3Mustererkennung mit regulären Ausdrücken
11.3.1Reguläre Ausdrücke definieren
Literale Zeichen
Zeichenklassen
Unicode-Zeichenklassen
Wiederholungen
Nicht gierige Wiederholung
Alternativen, Gruppierung und Referenzen
Benannte Capture-Gruppen
Die Trefferposition angeben
Lookbehind-Zusicherungen
Flags
11.3.2String-Methoden für die Mustererkennung
search()
replace()
match()
matchAll()
split()
11.3.3Die RegExp-Klasse
RegExp-Eigenschaften
test()
exec()
Die Eigenschaft lastIndex und die Wiederverwendung von Regexes
11.4Datum und Uhrzeit
11.4.1Zeitstempel
Hochauflösende Zeitstempel
11.4.2Datumsberechnungen
11.4.3Datumsstrings formatieren und parsen
11.5Fehlerklassen
11.6Serialisierung und Parsing mit JSON
11.6.1Eigene JSON-Erweiterungen
11.7Die Internationalisierungs-API
11.7.1Zahlen formatieren
11.7.2Datum und Uhrzeit formatieren
11.7.3Strings vergleichen
11.8Die Console-API
11.8.1Formatierte Ausgaben auf der Konsole
11.9URL-APIs
11.9.1Veraltete URL-Funktionen
11.10Timer
11.11Zusammenfassung
KAPITEL 12. Iteratoren und Generatoren
12.1Wie Iteratoren funktionieren
12.2Iterierbare Objekte implementieren
Beispiel 12-1: Eine iterierbare, numerische Range-Klasse
12.2.1»Schließen« eines Iterators: die return()-Methode
12.3Generatoren
12.3.1Beispiele für Generatoren
12.3.2yield* und rekursive Generatoren
12.4Erweiterte Generatorfunktionen
12.4.1Der Rückgabewert einer Generatorfunktion
12.4.2Der Wert eines yield-Ausdrucks
12.4.3Die return()- und throw()-Methoden eines Generators
12.4.4Ein abschließender Hinweis zu Generatoren
12.5Zusammenfassung
KAPITEL 13. Asynchrones JavaScript
13.1Asynchrone Programmierung mit Callbacks
13.1.1Timer
13.1.2Events
13.1.3Netzwerkevents
13.1.4Callbacks und Events in Node
13.2Promises
13.2.1Promises verwenden
Fehlerbehandlung mit Promises
Promise-Terminologie
13.2.2Promises verketten
13.2.3Promises lösen
13.2.4Mehr zu Promises und Fehlern
Die Methoden catch() und finally()
Einen Promise-Callback beenden
13.2.5Promises parallel ausführen
13.2.6Promises durchführen
Promises, die auf anderen Promises basieren
Promises, die auf synchronen Werten basieren
Promises von Anfang an
Beispiel 13-1: Eine asynchrone getJSON()-Funktion
13.2.7Aufeinanderfolgende Promises
13.3async und await
13.3.1await-Ausdrücke
13.3.2async-Funktionen
13.3.3Mit await auf mehrere Promises warten
13.3.4Implementierungsdetails
13.4Asynchrone Iteration
13.4.1Die for/await-Schleife
13.4.2Asynchrone Iteratoren
13.4.3Asynchrone Generatoren
13.4.4Asynchrone Iteratoren implementieren
13.5Zusammenfassung
KAPITEL 14. Metaprogrammierung
14.1Eigenschaftsattribute
Beispiel 14-1: Eigenschaften und Attribute von einem Objekt in ein anderes kopieren
14.2Objekte erweitern
14.3Das prototype-Attribut
14.4Wohlbekannte Symbole
14.4.1Symbol.iterator und Symbol.asyncIterator
14.4.2Symbol.hasInstance
14.4.3Symbol.toStringTag
14.4.4Symbol.species
14.4.5Symbol.isConcatSpreadable
14.4.6Symbole für die Mustererkennung
14.4.7Symbol.toPrimitive
14.4.8Symbol.unscopables
14.5Template-Tags
14.6Die Reflect-API
14.7Proxy-Objekte
14.7.1Proxy-Invarianten
14.8Zusammenfassung
KAPITEL 15. JavaScript im Webbrowser
Clientseitiges JavaScript
Legacy-APIs
15.1Grundlagen der Webprogrammierung
15.1.1JavaScript in HTML-<script>-Tags
Module
Angabe des Skripttyps
Wann Skripte ausgeführt werden sollen: async und deferred
Bedarfsabhängiges Laden von Skripten
15.1.2Das Document Object Model
15.1.3Das globale Objekt in Webbrowsern
15.1.4Skripte teilen sich einen Namensraum
15.1.5Ausführung von JavaScript-Programmen
Das clientseitige Threading-Modell
Clientseitiges JavaScript im Zeitverlauf
15.1.6Programmeingaben und -ausgaben
15.1.7Programmfehler
15.1.8Das Websicherheitsmodell
Was JavaScript nicht kann
Die Same-Origin-Policy
Cross-Site-Scripting
15.2Events
15.2.1Eventkategorien
15.2.2Eventhandler registrieren
Eventhandler als Eigenschaften setzen
Eventhandler als Attribute setzen
addEventListener()
15.2.3Eventhandler aufrufen
Das Argument eines Eventhandler-Aufrufs
Kontext eines Eventhandlers
Rückgabewert eines Eventhandlers
Aufrufreihenfolge
15.2.4Ausbreitung von Events
15.2.5Events abbrechen
15.2.6Benutzerdefinierte Events auslösen
15.3Dokumente skripten
15.3.1Dokumentelemente auswählen
Auswahl von Elementen mit CSS-Selektoren
Andere Methoden zur Elementauswahl
Vorausgewählte Elemente
15.3.2Durchlaufen der Dokumentstruktur
Dokumente als Elementbäume
15.3.3Attribute
HTML-Attribute als Element-Eigenschaften
Das Attribut class
data-Attribute
15.3.4Inhalt von Elementen
Elementinhalt als HTML
Elementinhalt als Klartext
Text in <script>-Elementen
15.3.5Knoten erstellen, einfügen und löschen
15.3.6Beispiel: Erstellen eines Inhaltsverzeichnisses
Beispiel 15-1: Generieren eines Inhaltsverzeichnisses mithilfe der DOM-API
15.4CSS skripten
15.4.1CSS-Klassen
15.4.2Inline-Stile
Namenskonventionen: CSS-Eigenschaften in JavaScript
15.4.3Berechnete Stile
15.4.4Stylesheets skripten
15.4.5CSS-Animationen und -Events
15.5Dokumentgeometrie und Scrolling
15.5.1Dokument- und Viewport-Koordinaten
CSS-Pixel
15.5.2Die Geometrie eines Elements abfragen
15.5.3Das Element an einem gegebenen Punkt bestimmen
15.5.4Scrolling
15.5.5Größe des Viewports und Inhalts sowie Bildlaufposition
15.6Webkomponenten
15.6.1Verwendung von Webkomponenten
DocumentFragment-Knoten
15.6.2HTML-Templates
15.6.3Benutzerdefinierte Elemente
Beispiel 15-2: Ein benutzerdefiniertes Element <inline-circle>
15.6.4Shadow DOM
Kapselung im Shadow DOM
Shadow-DOM-Slots und Kindelemente des normalen DOM
Shadow-DOM-API
15.6.5Beispiel: Eine <search-box>-Webkomponente
Beispiel 15-3: Implementierung einer Webkomponente
15.7SVG: Scalable Vector Graphics
15.7.1SVG in HTML
15.7.2SVG skripten
15.7.3SVG-Bilder mit JavaScript erstellen
Beispiel 15-4: Zeichnen eines Kuchendiagramms mit JavaScript und SVG
15.8Grafiken auf einem <canvas>
3-D-Grafiken auf einem Canvas
15.8.1Pfade und Polygone
Beispiel 15-5: Regelmäßige Polygone mit moveTo(), lineTo() und closePath()
15.8.2Abmessungen und Koordinaten des Canvas
15.8.3Grafikattribute
Linienstile
Farben, Muster und Farbverläufe
Textstile
Schatten
Transluzenz und Compositing
Speichern und Wiederherstellen des Grafikstatus
15.8.4Zeichenoperationen auf dem Canvas
Rechtecke
Kurven
Beispiel 15-6: Einem Pfad Kurven hinzufügen
Text
Bilder
15.8.5Transformationen des Koordinatensystems
Transformationen mathematisch verstehen
Eine Beispieltransformation
Beispiel 15-7: Eine Koch-Schneeflocke mit Transformationen zeichnen
15.8.6Clipping
15.8.7Pixelmanipulation
Beispiel 15-8: Bewegungsunschärfe mit ImageData
15.9Audio-APIs
15.9.1Der Audio()-Konstruktor
15.9.2Die WebAudio-API
15.10Location-Objekt, Navigation und Browserverlauf
15.10.1Neue Dokumente laden
15.10.2Browserverlauf
15.10.3Verlaufsverwaltung mit hashchange-Events
15.10.4Verlaufsverwaltung mit pushState()
Der »Structured Clone«-Algorithmus
Beispiel 15-9: Verlaufsverwaltung mit pushState()
15.11Netzwerkoperationen
15.11.1fetch()
Tschüs XMLHttpRequest!
HTTP-Statuscodes, Response-Header und Netzwerkfehler
Request-Parameter festlegen
Request-Header festlegen
Response-Bodys parsen
Response-Bodys streamen
Beispiel 15-10: Streaming des Response-Bodys eines fetch()-Requests
Request-Methode und -Body angeben
Datei-Upload mit fetch()
Cross-Origin Requests
Abbruch eines Requests
Weitere Request-Optionen
15.11.2Server-Sent Events
Beispiel 15-11: Ein einfacher Chatclient mit EventSource
Beispiel 15-12: Ein Chatserver für Server-Sent Events
15.11.3WebSockets
WebSockets erstellen, verbinden und trennen
Nachrichten über ein WebSocket senden
Nachrichten über ein WebSocket empfangen
Aushandlung des Protokolls
15.12Clientseitige Speicherung
Speicher, Sicherheit und Datenschutz
15.12.1localStorage und sessionStorage
Lebensdauer und Geltungsbereich
storage-Events
15.12.2Cookies
Warum »Cookie«?
Cookies auslesen
Cookie-Attribute: Lebensdauer und Geltungsbereich
Cookie-Limitierungen
Cookies speichern
15.12.3IndexedDB
Beispiel 15-13: Eine IndexedDB-Datenbank mit US-Postleitzahlen
15.13Worker-Threads und Messaging
15.13.1Worker-Objekte
15.13.2Das globale Objekt in Workern
15.13.3Code in einen Worker importieren
Module in Workern
15.13.4Worker-Ausführungsmodell
Fehlerbehandlung in Workern
15.13.5postMessage(), MessagePorts und MessageChannels
15.13.6Cross-Origin-Messaging mit postMessage()
15.14Beispiel: Die Mandelbrot-Menge
Beispiel 15-14: Worker-Code zur Berechnung der Mandelbrot-Menge
Beispiel 15-15: Ein Viewer für die Mandelbrot-Menge
15.15Zusammenfassung und Vorschläge für die weitere Lektüre
15.15.1HTML und CSS
15.15.2Performance
15.15.3Sicherheit
15.15.4WebAssembly
15.15.5Weitere Document- und Window-Eigenschaften
15.15.6Events
15.15.7Progressive Web Apps und Service Worker
15.15.8APIs für mobile Geräte
15.15.9Binär-APIs
15.15.10Medien-APIs
15.15.11Kryptografie und verwandte APIs
KAPITEL 16. Serverseitiges JavaScript mit Node
Node installieren
16.1Grundlagen der Node-Programmierung
16.1.1Ausgaben auf der Konsole
16.1.2Kommandozeilenargumente und Umgebungsvariablen
16.1.3Der Lebenszyklus von Programmen
16.1.4Node-Module
16.1.5Der Node Package Manager
16.2Node ist standardmäßig asynchron
Echter Parallelismus mit Node
16.3Buffer
16.4Events und EventEmitter
16.5Datenströme
16.5.1Pipes
16.5.2Asynchrone Iteratoren
16.5.3In Streams schreiben und mit Rückstau umgehen
16.5.4Streams eventbasiert lesen
Der fließende Modus
Der pausierte Modus
16.6Details zu Prozessen, CPU und Betriebssystem
16.7Mit Dateien arbeiten
16.7.1Pfade, Dateideskriptoren und Dateihandles
16.7.2Dateien lesen
16.7.3Dateien schreiben
Dateimodus-Strings
16.7.4Dateioperationen
16.7.5Metadaten
16.7.6Mit Verzeichnissen arbeiten
16.8HTTP-Clients und -Server
16.9Nicht-HTTP-basierte Netzwerkserver und -clients
16.10Mit Kindprozessen arbeiten
16.10.1execSync() und execFileSync()
Optionen für Kindprozesse
16.10.2Kindprozesse ausführen mit exec() und execFile()
16.10.3spawn()
16.10.4fork()
16.11Worker-Threads
16.11.1Worker erstellen und Nachrichten weitergeben
16.11.2Die Worker-Ausführungsumgebung
16.11.3Kommunikationskanäle und Message-Ports
16.11.4MessagePorts und typisierte Arrays übertragen
16.11.5Typisierte Arrays in mehreren Threads gemeinsam nutzen
16.12Zusammenfassung
KAPITEL 17. JavaScript-Werkzeuge und -Erweiterungen
17.1Linting mit ESLint
17.2JavaScript-Formatierung mit Prettier
17.3Unit-Tests mit Jest
17.4Paketverwaltung mit npm
17.5Code-Bundling
17.6Transpilierung mit Babel
17.7JSX: Markup-Ausdrücke in JavaScript
17.8Typüberprüfung mit Flow
TypeScript oder Flow?
17.8.1Flow installieren und ausführen
17.8.2Typannotationen verwenden
17.8.3Klassentypen
17.8.4Objekttypen
17.8.5Typaliase
17.8.6Array-Typen
17.8.7Weitere parametrisierte Typen
17.8.8Schreibgeschützte Typen
17.8.9Funktionstypen
17.8.10Vereinigungstypen
17.8.11Aufzählungstypen und unterschiedene Vereinigungstypen
17.9Zusammenfassung
Fußnoten. Kapitel 2: Die lexikalische Struktur
Kapitel 3: Typen, Werte und Variablen
Kapitel 5: Anweisungen
Kapitel 6: Objekte
Kapitel 8: Funktionen
Kapitel 9: Klassen
Kapitel 10: Module
Kapitel 11: Die JavaScript-Standardbibliothek
Kapitel 13: Asynchrones JavaScript
Kapitel 14: Metaprogrammierung
Kapitel 15: JavaScript im Webbrowser
Kapitel 16: Serverseitiges JavaScript mit Node
Kapitel 17: JavaScript-Werkzeuge und -Erweiterungen
Index. Symbole
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Über den Autor
Über die Übersetzer
Kolophon
Отрывок из книги
»In diesem Buch erfahren Sie Dinge über JavaScript, von denen Sie bisher nicht einmal geahnt hatten, wie dringend Sie sie wissen wollten. Die Qualität Ihres Codes und Ihre Produktivität werden extrem davon profitieren. Davids Wissen über JavaScript, dessen Feinheiten und typische Fehlerquellen ist verblüffend, und seine Qualitäten sind in diesem wirklich außergewöhnlichen Handbuch überall spürbar.«
– Schalk Neethling, Senior Frontend Engineer bei MDN Web Docs
.....
// zu erstellen.
let p = new Point(1, 1); // Der geometrische Punkt (1,1).
.....