molily Navigation

Artikel überarbeitet: Organisation von JavaScripten

Bereits im August 2006 habe ich auf SELFHTML aktuell den Artikel Organisation von JavaScripten – Programmiertechniken zur Strukturierung von modernen, wiederverwendbaren JavaScripten veröffentlicht. Es war einer der ersten deutschsprachigen Artikel, die fortgeschrittene JavaScript-Konzepte wie Unobtrusive JavaScript, Object-Literale, das Revealing Module Pattern, Namensräume und Closures kompakt vorstellten und die Einsatzbereiche von JavaScript-Frameworks skizzierten. 2008 habe ich den Artikel um objektorientierte Programmierung mit Konstruktoren sowie Function Binding mit Function.prototype.bind()/bindAsEventListener() erweitert.

Es war Zeit für eine Komplettüberarbeitung und substantielle Ergänzung. Die neue Version habe ich zunächst in meine Einführung in JavaScript eingepflegt und der Text wurde auf fünf Unterseiten verteilt:

  1. Voraussetzungen und Überblick

    Unobtrusive JavaScript und das Schichtenmodell, JavaScript hat keine Klassen, Grundpfeiler für fortgeschrittenes JavaScript

  2. Module und Kapselung

    Kapselung vs. Verfügbarkeit, Module mit dem Object-Literal, Funktions-Scopes, Revealing Module Pattern, Erweiterbare Module

  3. Konstruktoren, Prototypen und Instanzen

    Konstruktor-Funktionen, prototypische Objekte, prototypische Vererbung verstehen, Private Objekte (»private Eigenschaften«)

  4. Objektverfügbarkeit und this-Kontext

    Bedeutung von this, Methoden in anderen this-Kontexten, Closures, Function Binding

  5. Framework-Architekturen (derzeit noch leer)

Was ist neu?

Die Überarbeitung schenkt den einzelnen Konzepten mehr Beachtung. Die vom Revealing Module Pattern bekannte Kapselung durch eine anonyme Funktion (function () {})() ist zum Standard für viele Scripte geworden. Zur Beschreibung von Konstruktoren sind private Objekte und Prototypen hinzugekommen. Dazu gibt es zwar einige deutschsprachige Literatur, aber die meiste hantiert mit Begriffen aus der klassenbasierten Objektorientierung, ohne die fundamentalen Unterschiede zu vermitteln.

Der überarbeitete Artikel berücksichtigt nun Leser, die klassenbasierte OOP kennen, und erklärt die JavaScript-Besonderheiten wie prototypische Vererbung. Neben den Einzeltechniken gebe ich einen Überblick, auf welchen Säulen die fortgeschrittene JavaScript-Entwicklung meiner Auffassung nach ruht: dynamische Objekte/Objects, Funktionen als Objekte erster Klasse, Scopes und Scope-Chains sowie Prototypen.

Noch sind nicht alle Teile fertig und sämtliche Inhalte überarbeitet. Beispielsweise durchgehende Literaturangaben fehlen noch. Der Text soll weiter wachsen und letztendlich den 2006er-Artikel ersetzen.

Was ist für die Zukunft geplant?

Als nächstes möchte ich Framework-Architekturen erläutern, darunter die prototypische Erweiterung (Prototype/Mootools), DOM-Wrapper (jQuery und kommende Prototype-Versionen) sowie Modularisierung und Façades (YUI). Eine Übersicht darüber habe ich schon unter Wo bleiben neue Architekturen für JavaScript-Frameworks? gegeben.

Danach möchte fortgeschrittene OOP mit Bibliotheken wie Prototype/Mootools, Joose und Traits.js vorstellen, welche unter anderem Mehrfachvererbung und (Pseudo-)Klassen in JavaScript ermöglichen. In einem dritten Schritt will ich ein Ausblick auf ECMAScript 5, den neuen JavaScript-Standard werfen.

Feedback, Mitmachen, Lizenz und Dank

Über Feedback freue ich mich schon jetzt! Zum Beispiel per E-Mail an zapperlott@gmail.com.

Wer an der Dokumentation mitarbeiten will, kann dies über Github tun: github.com/molily/javascript-einfuehrung. Mit der Versionsverwaltung Git lassen sich die Texte herunterladen, ergänzen und korrigieren sowie Änderungen wieder zurücksenden.

Die Inhalte stehen – wie meine gesamte JavaScript-Einführung – unter einer freien Creative-Commons-Lizenz (CC-BY-SA), welche eine Verwendung der Texte z.B. in der Wikipedia und dem SELFHTML-Wiki erlaubt.

Vielen Dank an Johannes alias Knuton (Twitter, Github), der bereits tatkräftig bei der Arbeit an den Texten mitgeholfen hat!