Hallo Ihr zwei,
Irgendwie geht es die letzten Jahre, seitdem Netscape weg ist, mit der Sprache sowieso nicht mehr vorwärts.
Äh. ECMAScript und damit auch Javascript wird seit über einem Jahr von der zuständigen Arbeitsgruppe rasant und stark weiterentwickelt; manche meinen sogar zu stark. Einzelne Bestandteile der Weiterentwicklung lassen sich in den derzeit noch proprietären Varianten Javascript1.6, 1.7 und 1.8 finden.
Für ECMAScript 4, auf dem JS 2.0 basieren wird sind durchaus größere Dinge geplant, ein Klassen-basiertes Objekt-System, Interfaces, Namensräume, Packages, optionales Typing, etc., etc. Und wenn sich das nicht wieder verändert hat, wird die Unterscheidung zwischen Primitives und Objekt-Wrappern aufgehoben.
Das dumme ist, dass das alles noch sehr stark im Flux ist und man sich die Informationen aus Präsentationen von JS-Erfinder und Mozilla-Guru Brendan Eich oder aus den stark disorganisierten EMCAScript-Wiki zusammen suchen muss.
Dass es vorwärts gehen könnte mit dem Sprachkern, d.h. z.B. eine Änderung am Verhalten des "+" Operators, kann man ohnehin vergessen.
Soweit ich das sehe, wird in ES4 eindeutig auf eingebaute Operatoren mit all ihren hier im Thread dokumentierten Schwächen verzichtet und stattdessen normale überladbare Methoden oder Funktionen nutzen. Da fliegen zwei Vorschläge rum, der eine würde Klassenmethoden der entsprechenden Klasse nutzen:
class MyString {
public static function +(left: MyString, right: MyString) : MyString {
return left.concat(right);
}
}
Der andere definiert generische Funktionen, also nicht an Objekte gebunden, die sich in ihrer Signatur (Typisierung) unterscheiden und dementsprechend angewandt werden:
generic function (a, b) {... };
generic function (a: Number, b: Number) : Number { ... };
generic function (a: String, b: String) : String { ... };
Wie das auch realisiert wird; mit beiden Varianten könnte man das derzeitige Verhalten des +-Operators nachbilden, um Abwärtskompabilität zumindest im Default zu erzeugen.
Tim