zurück zum Artikel

Wie Objekte in JavaScript funktionieren

| Lars Hupel

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

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.


URL dieses Artikels:
https://www.heise.de/-7325258

Links in diesem Artikel:
[1] https://www.heise.de/ratgeber/Defensives-Programmieren-Robusten-Code-mit-TypeScript-erzeugen-9320247.html
[2] https://www.heise.de/ratgeber/Datenaustausch-zwischen-PHP-und-JavaScript-realisieren-9306537.html
[3] https://www.heise.de/ratgeber/Warum-der-Einstieg-ins-Programmieren-mit-JavaScript-eine-gute-Idee-ist-9010515.html
[4] https://www.heise.de/ratgeber/Wie-man-auch-mit-JavaScript-objektorientiert-programmieren-kann-9237425.html
[5] https://www.heise.de/hintergrund/Wie-Objekte-in-JavaScript-funktionieren-7325258.html
[6] https://www.heise.de/tests/Bun-Laufzeitumgebung-fuer-JavaScript-und-TypeScript-7274144.html
[7] https://www.heise.de/hintergrund/JavaScript-Frameworks-Angular-React-Vue-und-Svelte-im-Vergleich-7271648.html
[8] https://www.heise.de/hintergrund/Asynchrones-JavaScript-Wie-die-Event-Loop-asynchronen-Code-im-Browser-erlaubt-6327586.html
[9] https://www.heise.de/hintergrund/JavaScript-Die-Rendering-Engines-von-React-Angular-und-Ember-im-Vergleich-6030549.html
[10] https://www.heise.de/ratgeber/Fuenf-Helferlein-fuer-JavaScript-Entwickler-6003700.html
[11] https://www.heise.de/ratgeber/QR-Codes-mit-JavaScript-lesen-und-generieren-5042938.html