Wie Objekte in JavaScript funktionieren

JavaScripts Art der Objektorientierung ist anders als die anderer Sprachen. Daran ändern auch Klassen nichts. So funktioniert das ungewöhnliche System.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen
, Thorsten Hübner

(Bild: Thorsten Hübner)

Lesezeit: 14 Min.
Von
  • Lars Hupel
Inhaltsverzeichnis

JavaScript geht bei Klassen und Objekten einen Sonderweg. Das dürfte viele Programmierer nicht überraschen, die Sprache ist bekannt für ihre zahlreichen exzentrischen Eskapaden, die – je nach Kontext – erheitern oder frustrieren. Ein gutes Beispiel ist das kuriose Verhalten des Gleichheitsoperators ==:

 [] ==  0;   // -> true
 0  == "0";  // -> true
"0" == [];   // -> false

Ein leeres Array ist gleich 0 (aha?!), 0 ist gleich der Ziffer Null (okay …), aber die Ziffer Null ist nicht gleich dem leeren Array (soviel zur "Gleichheit" des Operators). Man kann derart unintuitive Sperenzchen als Designfehler ansehen und im konkreten Fall den neueren, typprüfenden Vergleichsoperator === nutzen. Das hilft aber nur bedingt aus dem Schneider, denn JavaScript hat solche alten Zöpfe wie == nie abgeschnitten.

Mehr zu JavaScript und Projekten:

Diese Rückwärtskompatibilität trug durchaus zur weiten Verbreitung der Sprache bei: Code, der vor Urzeiten im Netscape Navigator lief, läuft auch heute noch in Firefox, Chrome und diversen anderen JavaScript-Engines in Front- und Backend. Aber diese Kompatibilität bedeutet auch, dass man die alten Tricks und Tücken kennen muss, weil sich auch moderner Code nicht von ihnen freimachen kann.