O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

JavaScript Patterns

Book Description

Worin besteht der klügste Weg, eine JavaScript-Anwendung zu entwickeln? JavaScript Patterns hilft dem Leser bei der Beantwortung dieser Frage mit zahlreichen Code-Patterns und Best-Practices-Beispielen.

Wenn JavaScript-Programmierer nach Lösungen für ihre JavaScript-Objekte, -Funktionen und Vererbungen suchen, dann sind die Entwurfsmuster und Code-Templates in diesem Buch genau das, was sie für eine professionelle Arbeit benötigen.

Ebenso werden in dem Buch Empfehlungen für die bestmögliche Implementierung der Patterns gegeben, immer verbunden mit praxisnahen Beispielen. Darüber hinaus lernt der Leser wichtige Anti-Patterns kennen.

Table of Contents

  1. Widmung
  2. Vorwort
    1. Zielgruppe dieses Buches
    2. Konventionen in diesem Buch
    3. Verwendung der Codebeispiele
    4. Danksagungen
    5. Quellen
    6. Leseempfehlungen
  3. 1. Einführung
    1. Muster
    2. JavaScript: Konzepte
      1. Objektorientiert
      2. Keine Klassen
      3. Prototypen
      4. Umgebung
    3. ECMAScript 5
    4. JSLint
    5. Die Konsole
  4. 2. Grundlagen
    1. Wartbaren Code schreiben
    2. Wenige globale Variablen verwenden
      1. Das Problem mit globalen Variablen
      2. Nebenwirkungen eines vergessenen var
      3. Zugriff auf das globale Objekt
      4. Single-var-Muster
      5. Hoisting: Ein Problem mit verstreuten vars
    3. for-Schleifen
    4. for-in-Schleifen
    5. Eingebaute Prototypen (nicht) erweitern
    6. switch-Muster
    7. Implizite Typecasts vermeiden
      1. eval() vermeiden
    8. Zahlen umwandeln mit parseInt()
    9. Code-Richtlinien
      1. Einrücken
      2. Geschweifte Klammern
      3. Position der öffnenden Klammer
      4. Leerraum
    10. Namenskonventionen
      1. Konstruktoren mit Großbuchstaben beginnen
      2. Wörter trennen
      3. Andere Namens-Muster
    11. Kommentare schreiben
    12. Eine API-Dokumentation schreiben
      1. YUIDoc-Beispiel
    13. Schreiben, um gelesen zu werden
    14. Peer Reviews
    15. Minifizieren … in der Produktionsumgebung
    16. JSLint nutzen
    17. Zusammenfassung
  5. 3. Literale und Konstruktoren
    1. Objekt-Literale
      1. Die Objekt-Literal-Syntax
      2. Objekte aus einem Konstruktor
      3. Object-Konstruktor-Überraschung
    2. Eigene Konstruktor-Funktionen
      1. Rückgabewerte von Konstruktoren
    3. Muster zum Erzwingen von new
      1. Namenskonventionen
      2. that verwenden
      3. Selbst aufrufender Konstruktor
    4. Array-Literal
      1. Die Array-Literal-Syntax
      2. Kuriositäten im Array-Konstruktor
      3. Auf »Array-Haftigkeit« prüfen
    5. JSON
      1. Mit JSON arbeiten
    6. Regexp-Literal
      1. Regexp-Literal-Syntax
    7. Wrapper für Primitive
    8. Fehler-Objekte
    9. Zusammenfassung
  6. 4. Funktionen
    1. Hintergrund
      1. Mehrdeutige Terminologie
      2. Deklarationen versus Ausdrücke: Namen und Hoisting
      3. name-Eigenschaft von Function
      4. Funktions-Hoisting
    2. Callback-Muster
      1. Ein Callback-Beispiel
      2. Callbacks und Scope
      3. Asynchrone Event Listener
      4. Timeouts
      5. Callbacks in Bibliotheken
    3. Funktionen zurückgeben
    4. Selbst-definierende Funktionen
    5. Immediate Function
      1. Parameter einer Immediate Function
      2. Rückgabewerte aus Immediate Functions
      3. Vorteile und Anwendungsfälle
    6. Immediate-Object-Initialisierung
    7. Verzweigungen beim Initialisieren (Init-Time Branching)
    8. Funktions-Eigenschaften – Ein Memoisierungs-Muster
    9. Konfigurations-Objekte
    10. Curry
      1. Anwenden einer Funktion
      2. Partielle Anwendung
      3. Currying
      4. Wann man Currying nutzt
    11. Zusammenfassung
  7. 5. Objekt-Erzeugungs-Muster
    1. Namensraum-Muster
      1. Namensraum-Funktion
    2. Abhängigkeiten deklarieren
    3. Private Eigenschaften und Methoden
      1. Private Member
      2. Bevorzugte Methoden
      3. Privacy-Lücken
      4. Objekt-Literale und Privacy
      5. Eigenschaften und Privacy
      6. Private Funktionen als öffentliche Methoden bereitstellen (Revelation-Muster)
    4. Modul-Muster
      1. Bereitstellungs-Modul-Muster
      2. Module, die Konstruktoren erzeugen
      3. Globale Variablen in ein Modul importieren
    5. Sandbox-Muster
      1. Ein globaler Konstruktor
      2. Module hinzufügen
      3. Den Konstruktor implementieren
    6. Statische Member
      1. Öffentliche statische Member
      2. Private statische Member
    7. Objekt-Konstanten
    8. Verkettungs-Muster
      1. Vor- und Nachteile des Verkettungs-Musters
    9. method()-Methode
    10. Zusammenfassung
  8. 6. Muster zum Wiederverwenden von Code
    1. Klassische versus moderne Vererbungs-Muster
    2. Erwartete Ergebnisse bei klassischer Vererbung
    3. Klassisches Muster Nr. 1 – Das Standard-Muster
      1. Der Prototypen-Kette folgen
      2. Nachteile bei Muster Nr. 1
    4. Klassisches Muster Nr. 2 – Rent-a-Constructor
      1. Die Prototypen-Kette
      2. Mehrfachvererbung bei geliehenen Konstruktoren
      3. Vor- und Nachteile des Geliehener-Konstruktor-Musters
    5. Klassisches Muster Nr. 3 – Rent-and-Set-Prototyp
    6. Klassisches Muster Nr. 4 – Gemeinsamer Prototyp
    7. Klassisches Muster Nr. 5 – Ein temporärer Konstruktor
      1. Die Superklasse speichern
      2. Den Konstruktor-Zeiger zurücksetzen
    8. Klass
    9. Prototypische Vererbung
      1. Diskussion
      2. Ergänzung in ECMAScript 5
    10. Vererbung durch das Kopieren von Eigenschaften
    11. Mix-Ins
    12. Methoden ausleihen
      1. Beispiel: Von Array ausleihen
      2. Ausleihen und Binden
      3. Function.prototype.bind()
    13. Zusammenfassung
  9. 7. Entwurfsmuster
    1. Singleton
      1. new verwenden
      2. Instanz in einer statischen Eigenschaft
      3. Instanz in einem Closure
    2. Fabrik/Factory
      1. Eingebaute Object-Fabrik
    3. Iterator
    4. Dekorierer/Decorator
      1. Anwendung
      2. Implementierung
      3. Implementierung mit einer Liste
    5. Strategie/Strategy
      1. Beispiel: Datenvalidierung
    6. Fassade/Façade
    7. Stellvertreter/Proxy
      1. Ein Beispiel
        1. Ein Video-Erweiterer
        2. Ohne Stellvertreter
        3. HTML
        4. Event Handler
        5. videos-Objekt
        6. http-Objekt
        7. Auftritt des Stellvertreters
      2. Stellvertreter als Cache
    8. Vermittler/Mediator
      1. Vermittler-Beispiel
    9. Beobachter/Observer
      1. Beispiel Nr. 1: Zeitungs-Subskription
      2. Beispiel Nr. 2: Das Tastatur-Spiel
    10. Zusammenfassung
  10. 8. DOM- und Browser-Muster
    1. Separation of Concerns
    2. DOM Scripting
      1. DOM-Zugriff
      2. Veränderungen am DOM
    3. Events
      1. Event Handling
      2. Event Delegation
    4. Langlaufende Skripten
      1. setTimeout()
      2. Web Workers
    5. Remote Scripting
      1. XMLHttpRequest
      2. JSONP
        1. JSONP-Beispiel: Tic-Tac-Toe
      3. Frames und Image Beacons
    6. JavaScript-Code ausliefern
      1. Skripten kombinieren
      2. Minifizieren und Komprimieren
      3. Expires-Header
      4. Ein CDN verwenden
    7. Strategien zum Laden
      1. Die Position des <script>-Elements
      2. HTTP Chunking
      3. Dynamisches <script>-Element für nicht-blockierende Downloads
        1. Das <script>-Element anfügen
      4. Lazy-Loading
      5. Loading on Demand
      6. JavaScript im Voraus laden
    8. Zusammenfassung
  11. Index
  12. Kolophon
  13. Copyright