201324Nov

JavaScript: Type-Checking mit Object.prototype.toString()

JavaScript ist dynamisch typisiert — und objektorientiert. Ersteres hat nicht immer positive Folgen im Alltag eines Entwicklers: Typfehler treten erst zur Laufzeit auf und auch das Feststellen von Typen ist nicht ganz einfach, da die Funktion "typeof" stets den Typ "object" zurückgibt. Folgende Abfragen verdeutlichen das Ganze:

  • typeof []; // object
  • typeof {}; // object
  • typeof null; // object
  • typeof document.createElement("div"); // object
  • typeof /abcd/; // object

Hilfreich ist die Verwendung von "typeof" also nicht, wenn der Typ wirklich genau bestimmt werden soll. Abhilfe schafft hier die native Funktion "Object.prototype.toString()", mit der sich auch der Name der Klasse zurückggeben lässt, von welcher das Objekt abgeleitet wurde. Für die maximale Typkontrolle sind dann noch ein paar Anpassungen notwendig, da beispiels "NaN" auch als "Number" gewertet wird. Diese Anpassungen haben die Entwickler von Badoo umgesetzt und in diesem Beitrag veröffentlicht. Die daraus entstandene Hilfsfunktion "type()" kann also sehr nützlich sein, wenn es um die Bestimmung von Typen in JavaScript geht.