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 effektiv

Book Description

Um JavaScript wirklich zu beherrschen, müssen Sie lernen, die flexiblen und ausdrucksstarken Besonderheiten der Sprache effektiv zu nutzen und dabei Fallstricke zu vermeiden. Ganz gleich wie lange Sie schon JavaScript-Code schreiben -- dieses Buch wird Ihnen helfen, Ihr Verständnis von JavaScript zu vertiefen, so dass Sie zuverlässigere und besser wartbare Programme erstellen können.Der Autor David Herman, der über jahrelange Erfahrung im JavaScript-Standardisierungskomitee Ecma verfügt, beleuchtet die inneren Funktionen der Sprache wie niemals zuvor und hilft Ihnen dabei, die Vorzüge der Sprache voll zu nutzen. Dieses Buch spiegelt den neuesten JavaScript-Standard wieder und bietet Ihnen bewährte Techniken und Ansätze, auf die Sie sich in den kommenden Jahren stützen können.Effecive JavaScript ist um 68 Ansätze für besseren JavaScript-Code herum aufgebaut, jeweils anhand konkreter Beispiele.

Table of Contents

  1. Inhaltsverzeichnis
  2. Geleitwort
  3. Vorwort
  4. JavaScript und ECMAScript
  5. JavaScript im Web
  6. Ein Hinweis zur Nebenläufigkeit
  7. Danksagung
  8. 1 Darf ich vorstellen: JavaScript
  9. Thema 1 Welche Version von JavaScript verwenden Sie?
  10. Thema 2 Fließkommazahlen in JavaScript sind anders
  11. Thema 3 Vorsicht bei der impliziten Typumwandlung
  12. Thema 4 Verwenden Sie primitive Datentypen statt Objektwrappern
  13. Thema 5 Vergleichen Sie unterschiedliche Typen nie mit ==
  14. Thema 6 Achtung: JavaScript ergänzt automatisch Semikolons
  15. Thema 7 JavaScript nutzt 16-Bit-Unicode
  16. 2 Gültigkeitsbereich von Variablen
  17. Thema 8 Verwenden Sie das globale Objekt so wenig wie möglich
  18. Thema 9 Vergessen Sie nicht, lokale Variablen zu deklarieren
  19. Thema 10 Vermeiden Sie das Schlüsselwort with
  20. Thema 11 Keine Angst vor Closures
  21. Thema 12 Das müssen Sie kennen: Hoisting
  22. Thema 13 Schaffen Sie lokale Gültigkeitsbereiche durch IIFEs
  23. Thema 14 Gültigkeit von benannten Funktionsausdrücken
  24. Thema 15 Verlässliche Gültigkeitsbereiche von lokalen Funktionsdeklarationen
  25. Thema 16 Vermeiden Sie es, Variablen mit eval zu erstellen
  26. Thema 17 Verwenden Sie eval lieber indirekt
  27. 3 Funktionen
  28. Thema 18 Die Unterschiede zwischen Funktionen, Methoden und Konstruktoren
  29. Thema 19 Keine Angst vor Funktionen höherer Ordnung
  30. Thema 20 Rufen Sie Methoden mit benutzerdefiniertem Empfänger mit call auf
  31. Thema 21 Rufen Sie variadische Funktionen mit apply auf
  32. Thema 22 Erstellen Sie variadische Funktionen mit arguments
  33. Thema 23 Ändern Sie niemals das arguments-Objekt
  34. Thema 24 Speichern Sie Verweise auf arguments in einer Variable
  35. Thema 25 Extrahieren Sie Methoden mit festem Empfänger per bind
  36. Thema 26 Nutzen Sie bind beim Currying
  37. Thema 27 Kapseln Sie Code mit Closures, nicht mit Strings
  38. Thema 28 Verlassen Sie sich nicht auf die toString-Methode
  39. Thema 29 Vorsicht, wenn Sie den Call Stack inspizieren!
  40. 4 Objekte und Prototypen
  41. Thema 30 Achten Sie auf den Unterschied zwischen prototype, getPrototypeOf und __proto__
  42. Thema 31 Verwenden Sie lieber Object.getPrototypeOf statt __proto__
  43. Thema 32 Ändern Sie niemals __proto__!
  44. Thema 33 Erstellen Sie Konstruktoren, die auch ohne new funktionieren
  45. Thema 34 Speichern Sie Methoden mithilfe von Prototypen
  46. Thema 35 Speichern Sie private Daten mithilfe von Closures
  47. Thema 36 Speichern Sie den Instanzstatus nur in Instanzobjekten
  48. Thema 37 this sollten Sie kennen!
  49. Thema 38 Rufen Sie Superklassenkonstruktoren von Subklassenkonstruktoren aus auf
  50. Thema 39 Eigenschaftsnamen aus der Superklasse sollten Sie niemals wiederverwenden!
  51. Thema 40 Vermeiden Sie die Vererbung von Standardklassen
  52. Thema 41 Prototypen sind »richtige« Implementierungen
  53. Thema 42 Das brauchen Sie nicht: Unbesonnenes Monkey-Patching
  54. 5 Arrays und Dictionaries
  55. Thema 43 Erstellen Sie schlanke Dictionaries mit Object
  56. Thema 44 Schützen Sie sich mithilfe von Null-Prototypen vor einer Prototyp-Verunreinigung
  57. Thema 45 Schützen Sie sich mit hasOwnProperty vor Prototyp-Verunreinigungen
  58. Thema 46 Verwenden Sie für geordnete Collections lieber Arrays statt Dictionaries
  59. Thema 47 Fügen Sie niemals aufzählbare Eigenschaften zu Object.prototype hinzu!
  60. Thema 48 Ändern Sie Objekte nicht während einer Aufzählung
  61. Thema 49 Verwenden Sie for-Schleifen statt for...in-Schleifen, wenn Sie über Arrays iterieren
  62. Thema 50 Verwenden Sie lieber Iterationsmethoden als Schleifen
  63. Thema 51 Generische Arraymethoden für arrayähnliche Objekte wiederverwenden
  64. Thema 52 Verwenden Sie lieber Arrayliterale statt des Arraykonstruktors
  65. 6 Erstellung von Bibliotheken und APIs
  66. Thema 53 Bemühen Sie sich um eine einheitliche Schreibweise
  67. Thema 54 Behandeln Sie »undefined« als »nicht vorhanden«
  68. Thema 55 Zu viele Parameter? Nutzen Sie Optionsobjekte!
  69. Thema 56 Vermeiden Sie unnötige Zustände
  70. Thema 57 Verwenden Sie strukturelle Typisierung für flexible Schnittstellen
  71. Thema 58 Unterscheiden Sie Arrays und arrayähnliche Objekte
  72. Thema 59 Vermeiden Sie übermäßige Typumwandlung
  73. Thema 60 Unterstützen Sie Method Chaining
  74. 7 Nebenläufigkeit
  75. Thema 61 Blockieren Sie die Event Queue nicht, wenn I/O stattfindet
  76. Thema 62 Verwenden Sie verschachtelte oder benannte Callbacks für die asynchrone Abarbeitung
  77. Thema 63 Denken Sie an die Fehlerbehandlung!
  78. Thema 64 Nutzen Sie Rekursion für asynchrone Schleifen
  79. Thema 65 Blockieren Sie die Event Queue bei längeren Berechnungen nicht
  80. Thema 66 Steuern Sie nebenläufige Operationen mit einem Zähler
  81. Thema 67 Rufen Sie asynchrone Callbacks niemals synchron auf!
  82. Thema 68 Verwenden Sie Promises für eine sauberere asynchrone Logik
  83. Index