donp: Typecasting in verschiedenen Kontexten

Beitrag lesen

Hallo zonk,

Nein, das finde ich gar nicht logisch:

z = new Number (5);
Number.prototype.toString = function() {
return "fünf";
};

alert(z); // fünf
alert(z+5); // 10
alert(z+ " Kisten"); // 5 Kisten

z2 = 5;

alert(z2); // 5
alert(z2+5); // 10
alert(z2+ " Kisten"); // 5 Kisten

Ok, das scheint jetzt wieder relativ inkonsequent, hast recht.
IMO hätte man von Anfang an den "+" Operator nicht mehrdeutig implementieren sollen, dann gäbe es auch nicht solche Probleme.

Leider hatte JavaScript keine Zeit, sich von seinen Kinderkrankheiten zu erholen, weil es viel zu schnell überall verbreitet war, und nachträglich konnte bzw. wollte man an der Sprache selbst nicht mehr viel herumdoktern.

Douglas Crockford, von dessen Kenntnissen ich sehr viel halte, empfiehlt, Primitives wo immer möglich zu verwenden und nicht die entsprechenden Objekte, auch gerade wegen solcher Ungereimtheiten.

Es gibt es auch viele, die grundsätzlich davon abraten, die eingebauten Objekte zu erweitern bzw. deren Methoden zu überschreiben. Dafür gibt es ebenfalls gute Gründe. Man kann ja auch separate Objekte und Methoden für den gleichen Zweck schreiben.

Don P