Hallo,
Booleans, Zahlen und Strings können zwar als Objekte agieren, werden aber gelegentlich auch in primitiverer Maschinenrepräsentation herumübergeben, wobei dann benutzerdefinierte Eigenschaften nicht mitgenommen werden (z.B.: var n = new Number(42); n.foo = "bar"; alert(n.foo); n = n + 0; alert(n.foo);).
Das Beispiel führt eine Umwandlung in Primitive durch, das liegt am +-Operator, der natürlich nicht mit Objects rechnen kann. Das alte Object wird hier einfach verworfen, nachdem keine Referenz darauf mehr besteht. n ist nach der Zuweisung ein Primitive, ein völlig neues, daher hat es auch keine foo-Eigenschaft.
Mathias