molily: objekt | neutral es?

Beitrag lesen

Hallo,

var a = 5.466264;

(a ist bis hierher noch kein Objekt sondern ein primitiver Datentyp)

Ja, Interpreter-intern möglicherweise, der JavaScript-Programmierer kann es aber sofort wie ein Objekt verwenden - wie Axel sagt, ist es aus Sicht des Umgangs mit primitive value ein Objekt.

Wichtig ist die Unterscheidung eigentlich nur in der Hinsicht, dass primitive values mit anderen primitive values identisch sein können, objects aber nur mit sich selbst. Das wirkt sich darin aus, das Objects als Referenzen übergeben werden, primitive values als Kopien.

var a = "string primitive";  
a.eigenschaft = "bla";  
  
var b = Object("string object");  
b.eigenschaft = "bla";  
  
alert(typeof a + "\n" + typeof b);  
  
function aendern (x, y) {  
 alert(x.eigenschaft + "\n" + y.eigenschaft);  
}  
aendern(a, b);

Siehe auch </archiv/2005/9/t114730/#m732136>.

Der Parser erkennt hier, dass für die Variable a ein Objekt-Kontext benötigt wird, und konvertiert daher a in ein Objekt.

Ja, ein primitive value wird bei der Auswertung des Ausdrucks value.member umgewandelt: http://bclary.com/log/2004/11/07/#a-11.2.1

Aber auch nur für diese Auswertung:

var a = "string primitive";  
a.eigenschaft = "wert";  
alert(typeof a); // bleibt string, wird nicht object

Mathias