Kapitel 3. Die Natur von JavaScript
Inhaltsverzeichnis
Das Buch kaufen
(Werbung, bitte nicht blockieren.)

Kapitel 3. Die Natur von JavaScript

Die Natur von JavaScript lässt sich wie folgt zusammenfassen:

Es ist dynamisch
Viele Dinge können geändert werden. Sie können zum Beispiel Objekte frei mit Eigenschaften (Feldern) erweitern und daraus entfernen, nachdem sie erstellt wurden. Und Sie können Objekte direkt erstellen, ohne zuerst eine Objektfabrik (z. B. eine Klasse) zu erstellen.
Es ist dynamisch typisiert
Variablen und Objekteigenschaften können jederzeit Werte beliebigen Typs enthalten.
Es ist funktional und objektorientiert
JavaScript unterstützt zwei Programmiersprachenparadigmen: funktionale Programmierung (First-Class-Funktionen, Closures, partielle Anwendung über bind(), integrierte map() und reduce() für Arrays usw.) und objektorientierte Programmierung (veränderlicher Zustand, Objekte, Vererbung usw.).
Es scheitert leise
JavaScript hatte bis ECMAScript 3 keine Ausnahmebehandlung. Das erklärt, warum die Sprache so oft leise scheitert und die Werte von Argumenten und Operanden automatisch konvertiert: Sie konnte anfangs keine Ausnahmen auslösen.
Es wird als Quellcode bereitgestellt
JavaScript wird immer als Quellcode bereitgestellt und von JavaScript-Engines kompiliert. Quellcode hat den Vorteil, dass er ein flexibles Lieferformat ist und die Unterschiede zwischen den Engines abstrahiert. Zwei Techniken werden verwendet, um die Dateigrößen klein zu halten: Kompression (hauptsächlich gzip) und Minifizierung (Verkleinerung des Quellcodes durch Umbenennen von Variablen, Entfernen von Kommentaren usw.; siehe Kapitel 32 für Details).
Es ist Teil der Web-Plattform
JavaScript ist ein so wesentlicher Bestandteil der Web-Plattform (HTML5-APIs, DOM usw.), dass man leicht vergisst, dass Ersteres auch ohne Letzteres verwendet werden kann. Je mehr JavaScript jedoch in Nicht-Browser-Umgebungen (wie Node.js) verwendet wird, desto deutlicher wird dies.

Elegante Teile

Aber JavaScript hat auch viele elegante Teile. Brendans Eiches Favoriten sind:[3]

  • First-Class-Funktionen
  • Closures
  • Prototypen
  • Objektliterale
  • Array-Literale

Die letzten beiden Punkte, Objektliterale und Array-Literale, ermöglichen es Ihnen, mit Objekten zu beginnen und Abstraktionen (wie Konstruktoren, das Analogon von JavaScript zu Klassen) später einzuführen. Sie ermöglichen auch JSON (siehe Kapitel 22).

Beachten Sie, dass die eleganten Teile Ihnen helfen, die Eigenheiten zu umgehen. Sie ermöglichen es Ihnen beispielsweise, Block-Scoping, Module und Vererbungs-APIs zu implementieren – alles innerhalb der Sprache.

Einflüsse

JavaScript wurde von mehreren Programmiersprachen beeinflusst (wie in Abbildung 3-1 gezeigt)

  • Java ist das Vorbild für die Syntax von JavaScript. Es führte auch zu JavaScripts Partitionierung von Werten in Primitiven und Objekte und zum Date-Konstruktor (der ein Port von java.util.Date ist).
  • AWK inspirierte die Funktionen von JavaScript. Tatsächlich stammt das Schlüsselwort function von AWK.
  • Scheme ist der Grund, warum JavaScript First-Class-Funktionen hat (sie werden wie Werte behandelt und können als Argumente an Funktionen übergeben werden) und Closures (siehe Kapitel 16).
  • Self ist verantwortlich für den ungewöhnlichen objektorientierten Stil von JavaScript; es unterstützt prototypische Vererbung zwischen Objekten.
  • Perl und Python beeinflussten den Umgang von JavaScript mit Strings, Arrays und regulären Ausdrücken.
  • Über die eigentliche Sprache hinaus beeinflusste HyperTalk die Integration von JavaScript in Webbrowser. Es führte dazu, dass HTML-Tags Ereignisbehandlungsattribute wie onclick hatten.


[3] Brendan Eich, „A Brief History of JavaScript“, 21. Juli 2010, http://bit.ly/1lKkI0M.

Weiter: 4. Wie JavaScript entstanden ist