Hallo,
»new« ist nicht fehlerträchtig. Es tut das, was es soll, sehr gut. Es ist nur verwirrend und schwierig zu verstehen. Es sieht wie Java und klassenbasierte OOP aus, ist aber intern etwas anderes. Das ist ein bekannter Designfehler in JavaScript. Dasselbe gilt für »this«.
»new« macht nichts besonders, darunter stecken einfache Objekte, Konstruktoren und Prototypen. Wenn man das verstanden hat, kann man es sicher anwenden. Das tun tausende von Projekte auch.
Ich schreibe beruflich hauptsächlich Pseudoklassen in CoffeeScript, instantiiere sie mit »new« und arbeite mit CoffeeScripts Method-Binding. Das klappt hervorragend und ist gut lesbar. Ich wüsste nicht, was ich da alleine mit dem Verzicht auf »new« gewinnen würde. ECMAScript 6 wird »syntactic sugar« für Klassendeklarationen haben, die CoffeeScript und TypeScript sehr ähnlich sind. Das zeigt, dass diese Schreibweise weiter bleiben wird.
Korollar:
Weil »new« nur mit Wasser kocht,
… kann man *ohne* »new« *genau dasselbe* machen. Im Guten wie im Schlechten.
… haben andere Umsetzungen letztlich *dieselben* Probleme bei der Objektorientierung (z.B. mit »this«).
Ohne »new« kann man nichts Neues oder substantiell Anderes hinbekommen, man kann es höchstens weniger verwirrend notieren.
Ich halte die Standard-Schreibweise für ganz brauchbar, sehe keinen *zwingenden* Grund, sie zu wechseln. Sinnvoll wird das, wenn ich komplexere OOP umsetzen will. Man denke an so etwas wie JS.Class – was aber immer noch mit »new« arbeitet.
Mathias