Besonderheiten |
JS ist offenbar, wie vermutlich moderne Scriptsprachen intern um den Datentyp HashTabelle konzipiert. Sogar Arrays sind als Hash implementiert und funktionieren somit als "sparse Arrays", können also leere oder undefinierte Elemente enthalten und die formale Array-Länge ar.length() sagt nichts über die tatsächlich vorhandene Anzahl von Elementen aus (außer, dass nicht mehr vorhanden sein können). Objekte, Arrays, Hashes sind eng verwandt und als Parameter oft austauschbar. Sogar Funktionen sind wiederum Hashes (sie enthalten z. B. einen Array ihrer Parameter). Objekte enthalten als Hashes auch Funktionen (Variablen, die Zeiger zu Funktionen enhalten) und können somit auch dynamisch verändert werden.
Im Bezug auf Webseiten und DOM ist interessant, dass JavaScript und DOM weitgehend integrierte Systeme sind. D. h. ein DOM-Objekt kann unmittelbar als Javascript-Objekt verwendet werden (vermutlich ohne irgendeine interne Kompaibilitäthürde) und man kann z. B. zu einem Objekt der Web-Seite (etwa einem <div>...</div> Element) unmittelbar zusätzliche JS-Eigenschaften hinzufügen (konkret z. B. als divobj.xy=5 ).
Performance und Optimierung |
JS ist nicht gerade ein Performance-Kaiser und vermutlich langsamer als ziemlich jede Alternative. Kein Wunder, da doch nahezu jede Aktion (Variablenzugriff, Methodenaufruf) über eine Hierarchie von "Hashes von Hashes" erfolgt. Umso wichtiger ist es, keine unnotwendigen Objekte zu initialisieren, keine tiefen Objekthierarchien aufzubauen und lange Zugriffswege zu vermeiden.
Browserinkompatibilitäten |
Notorisch ist, dass ein Javascript-Code oft nicht überall, auf verschiedensten Browsern, läuft. Wenn man also grundsätzliches, speziell mit DOM tut, dann ist es sicher gut, alle Neuerungen mit mehreren browser zu testen (ich verwende im Moment IE, Opera und Firefox parallel für diesen Zweck). IE hat viele Eigenarten, die man durch speziellen Code berücksichtigen muss, d. h. das parallel Testen im IE und nicht-IE hat besondere Bedeutung.
Debug-Environment |
Firefox hat für mich bis jetzt das angenehmste Environment, vor allem neben einer Tools-Javascript-Console (die einigermaßen brauhbare Fehlermitteilungen ausspuckt) auch einen DOM-Inspektor, mit dem man die Hierarchie der DOM-Webseitenstruktur direkt anschauen kann. Das war schon oft wertvoll.
Einfache Mitteilungen kann man sich mit der Funktion alert(...) als Popupfenster geben lassen.