Hallo dedlfix,
jo, ist so. JavaScript unterscheidet zwischen Objekten und simple types. Simple types sind undefined, boolean, number und string (typeof null ist object).
Für boolean, number und string gibt es Objekt-Wrapper, die immer dann erzeugt werden, wenn auf einem solchen simple type eine Methode aufgerufen wird. Das nennt man Boxing (zumindest in .net) oder Auto-Boxing und ist etwas, das man nach Möglichkeit vermeiden sollte, denn es ist zeitaufwändig (zumindest in .net). Wenn ich auf einem String viele Methoden aufrufen will, kann es nützen, ihn vorher manuell zu boxen (zumindest in .net).
String.prototype.getType = function() {
return (typeof this) + " " + this.constructor.name;
}
console.log(typeof "foo"); // string
console.log("foo".getType()); // Auto-Boxing, object String
console.log("foo".constructor.name) // Auto-Boxing!
const foo = new String("foo"); // Wrapper-Objekt für manuelles Boxing
Und wie gesagt: das Hinzufügen von Properties geht nur auf Objekten, nicht auf simple types.
Rolf
--
sumpsi - posui - obstruxi
sumpsi - posui - obstruxi