molily: Datentypen in Javascript

Beitrag lesen

Aber hinter einem einfachem true/false steht auch ein Boolean-Objekt.
Erst in einem Kontext, der ein Objekt verlangt, werden sie in Objekte umgewandelt. Z.B. beim Property-Accessor-Operator.

Wichtig ist, dass diese Umwandlung nicht den ursprünglichen Primitive ändert und man üblicherweise keine Referenz auf das erzeugte Objekt erhält.

var bool = false;  
bool.member = "wtf";  
alert(bool.member); // undefined

Dieses Verhalten lässt sich nicht erklären, wenn man nicht zwischen Primitives und Objects unterscheidet und alles als Object ansieht.

Was hier passiert ist:

Object(bool).member = "wtf";  
alert(Object(bool).member); // undefined

Bei diesen beiden Umwandlungen in ein Object kommt ein anderes Objekt heraus. Das erste wird erweitert, dann aber weggeworfen.

Mathias