Homepage
Bitte unterstützen Sie dieses Buch:
kaufen Sie es
oder
spenden Sie
(Werbung, bitte nicht blockieren.)
Deep JavaScript
Inhaltsverzeichnis
I Frontmatter
1 Über dieses Buch
1.1 Wo ist die Homepage dieses Buches?
1.2 Was ist in diesem Buch?
1.3 Was bekomme ich für mein Geld?
1.4 Wie kann ich den Inhalt vorab ansehen?
1.5 Wie melde ich Fehler?
1.6 Tipps zum Lesen
1.7 Notationen und Konventionen
1.8 Danksagungen
II Typen, Werte, Variablen
2 Typumwandlung in JavaScript
2.1 Was ist Typumwandlung?
2.2 Operationen, die bei der Implementierung der Typumwandlung in der ECMAScript-Spezifikation helfen
2.3 Zwischenspiel: Spezifikationsalgorithmen in JavaScript ausdrücken
2.4 Beispiel-Algorithmen zur Typumwandlung
2.5 Operationen, die umwandeln
2.6 Glossar: Begriffe zur Typumwandlung
3 Der Destrukturierungsalgorithmus
3.1 Vorbereitung auf den Pattern-Matching-Algorithmus
3.2 Der Pattern-Matching-Algorithmus
3.3 Leere Objekt- und Array-Muster
3.4 Anwendung des Algorithmus
4 Umgebungen: Variablen im Detail
4.1 Umgebung: Datenstruktur zur Verwaltung von Variablen
4.2 Rekursion über Umgebungen
4.3 Verschachtelte Scopes über Umgebungen
4.4 Closures und Umgebungen
5 Ein genauerer Blick auf globale Variablen
5.1 Scopes
5.2 Lexikalische Umgebungen
5.3 Das globale Objekt
5.4 In Browsern zeigt
globalThis
nicht direkt auf das globale Objekt
5.5 Die globale Umgebung
5.6 Fazit: Warum hat JavaScript sowohl normale globale Variablen als auch das globale Objekt?
5.7 Weiterführende Lektüre und Quellen dieses Kapitels
III Arbeiten mit Daten
6 Kopieren von Objekten und Arrays
6.1 Flaches Kopieren vs. tiefes Kopieren
6.2 Flaches Kopieren in JavaScript
6.3 Tiefes Kopieren in JavaScript
6.4 Weiterführende Lektüre
7 Daten destruktiv und nicht-destruktiv aktualisieren
7.1 Beispiele: Objekt destruktiv und nicht-destruktiv aktualisieren
7.2 Beispiele: Array destruktiv und nicht-destruktiv aktualisieren
7.3 Manuelles tiefes Aktualisieren
7.4 Implementierung eines generischen tiefen Updates
8 Probleme geteilten veränderlichen Zustands und wie man sie vermeidet
8.1 Was ist geteilter veränderlicher Zustand und warum ist er problematisch?
8.2 Vermeiden von Sharing durch Kopieren von Daten
8.3 Vermeiden von Mutationen durch nicht-destruktives Aktualisieren
8.4 Vermeiden von Mutationen durch unveränderliche Daten
8.5 Bibliotheken zur Vermeidung von geteiltem veränderlichem Zustand
IV OOP: Objekt-Eigenschaften-Attribute
9 Eigenschaften-Attribute: eine Einführung
9.1 Die Struktur von Objekten
9.2 Eigenschaftsdeskriptoren
9.3 Deskriptoren für Eigenschaften abrufen
9.4 Eigenschaften über Deskriptoren definieren
9.5
Object.create()
: Objekte über Deskriptoren erstellen
9.6 Anwendungsfälle für
Object.getOwnPropertyDescriptors()
9.7 Deskriptor-Eigenschaften weglassen
9.8 Welche Eigenschaften-Attribute verwenden eingebaute Konstrukte?
9.9 API: Eigenschaftsdeskriptoren
9.10 Weiterführende Lektüre
10 Objekte vor Änderungen schützen
10.1 Schutzstufen: Erweiterungen verhindern, versiegeln, einfrieren
10.2 Objekterweiterungen verhindern
10.3 Objekte versiegeln
10.4 Objekte einfrieren
10.5 Weiterführende Lektüre
11 Eigenschaften: Zuweisung vs. Definition
11.1 Zuweisung vs. Definition
11.2 Definition und Zuweisung in der Theorie (optional)
11.3 Definition und Zuweisung in der Praxis
11.4 Welche Sprachkonstrukte verwenden Definition, welche Zuweisung?
11.5 Weiterführende Lektüre und Quellen dieses Kapitels
12 Enumerierbarkeit von Eigenschaften
12.1 Wie Enumerierbarkeit Eigenschafts-iterierende Konstrukte beeinflusst
12.2 Die Enumerierbarkeit von vordefinierten und erstellten Eigenschaften
12.3 Anwendungsfälle für Enumerierbarkeit
12.4 Fazit
V OOP: Techniken
13 Techniken zur Instanziierung von Klassen
13.1 Das Problem: eine Eigenschaft asynchron initialisieren
13.2 Lösung: Promise-basierter Konstruktor
13.3 Lösung: statische Factory-Methode
13.4 Unterklasse eines Promise-basierten Konstruktors (optional)
13.5 Fazit
13.6 Weiterführende Lektüre
14 Kopieren von Instanzen von Klassen:
.clone()
vs. Kopierkonstruktoren
14.1
.clone()
-Methoden
14.2 Statische Factory-Methoden
14.3 Danksagungen
15 Unveränderliche Wrapper für Sammlungen
15.1 Objekte wrappen
15.2 Ein unveränderlicher Wrapper für Maps
15.3 Ein unveränderlicher Wrapper für Arrays
VI Reguläre Ausdrücke
16 Reguläre Ausdrücke: Lookaround-Assertions anhand von Beispielen
16.1 Spickzettel: Lookaround-Assertions
16.2 Warnungen für dieses Kapitel
16.3 Beispiel: Festlegen, was vor oder nach einem Treffer kommt (positive Lookaround)
16.4 Beispiel: Festlegen, was nicht vor oder nach einem Treffer kommt (negative Lookaround)
16.5 Zwischenspiel: Lookaround-Assertions nach innen zeigen lassen
16.6 Beispiel: Strings matchen, die nicht mit
'abc'
beginnen
16.7 Beispiel: Teilstrings matchen, die nicht
'.mjs'
enthalten
16.8 Beispiel: Zeilen mit Kommentaren überspringen
16.9 Beispiel: Smarte Anführungszeichen
16.10 Danksagungen
16.11 Weiterführende Lektüre
VII Verschiedene Themen
17 Promises durch ihre Implementierung erkunden
17.1 Auffrischung: Zustände von Promises
17.2 Version 1: Standalone Promise
17.3 Version 2:
.then()
-Aufrufe verketten
17.4 Komfortmethode
.catch()
17.5 Reaktionen weglassen
17.6 Die Implementierung
17.7 Version 3: Promises, die von
.then()
-Callbacks zurückgegeben werden, abflachen
17.8 Version 4: Ausnahmen, die in Callback-Reaktionen ausgelöst werden
17.9 Version 5: Revealing Constructor Pattern
18 Metaprogrammierung mit Proxies
18.1 Übersicht
18.2 Programmierung versus Metaprogrammierung
18.3 Proxies erklärt
18.4 Anwendungsfälle für Proxies
18.5 Das Design der Proxy-API
18.6 FAQ: Proxies
18.7 Referenz: die Proxy-API
18.8 Fazit
18.9 Weiterführende Lektüre
19 Wo sind die restlichen Kapitel?