Benutzer-Werkzeuge

Webseiten-Werkzeuge


em:oop

OOP as seen by Edgemonkey

Javascript hat eine etwas andere Auffassung von von Objekten als die Meisten anderen Sprachen. Es folgt dabei eher den Expressions von Scheme als dem Namensgebenden Java oder dem Syntaxgebenden C: „Everything is an Object()“.

Das führt zu einigen interessanten Effekten, die hier aber nicht diskutiert werden sollen. Stattdessen (für neu und alt-Entwickler und „interessierte Nutzer“) hier eine Zusammenfassung der Logik hinter dem Affen (beziehungsweise seinem Code).

Global Context

Der Edgemonkey verpestet nicht den globalen Kontext von Javascript sinnlos: alle Objekte werden als Eigenschaften des in window injezierten Objektes EM angelegt.

Prototypen

Klassennamen werden nach Konvention in CamelCase mit Großbuchstaben am Anfang geschrieben. Ausnahme: PNAPI (Abkürzung!)

Dabei wird Konstruktor und assoziierter Prototyp nacheinander geschrieben (keine Class-Creation-Funktion). Klassen, die nur in speziellem Kontext benötigt werden, sind unter diesem zu finden: PNAPI.PNBox, da diese nur von PNAPI erstellt werden.

Funktionsnamen der Objekte kennen 3 Schreibweisen:

  • ev_*: Eventhandler für DOM-Elemente
  • CamelCase: extern aufgerufene Funktionen, besonders Module in EM.Pagehacks
  • camelCase: reguläre Funktionen

Sortierung

Grundsätzlich sind die generellen Erweiterungen wie Hilfsfunktionen für XPath oder Erweiterungen an String, Array etc. vorn angesiedelt. Normale Edgemonkey-Klassen haben jedoch keine besondere Reihenfolge, sind aber weitestgehend nach Themenkomplex konsistent.

Sprachfeatures

Weitestgehend werden Features von JavaScript 1.8 genutzt, besonders die Mozilla-Erweiterungen zu Array und String. Wo möglich, wird mit forEach, Closures und Method Chaining gearbeitet, um den Code kurz und leicht verständlich zu halten.

Global ausgeführter Code findet sich am Dateiende.

em/oop.txt · Zuletzt geändert: 2010/08/24 18:39 von martok