Diese Schreibweise ist idiotensicher, allerdings ist die interne Funktionsweise völlig weggekapselt.
Wieso "allerdings". Ist das als "nachteilig" gemeint? Oder als "dabei" bzw. "weil"?
Beides. Wie gesagt erlaubt diese Schreibweise keine Mehrdeutigkeiten und mehrere Schritte werden in einem zusammengefasst, sodass ihre Reihenfolge keine Rolle spielt. Gleichzeitig sehe ich es als negativ an, Programmierern vorzugaukeln, das sei echte klassenbasierte OOP. Das ist eine Leaky Abstraction. Man kann die Natur der Sprache nur bedingt verstecken.
Man wird sehr schnell zu dem Punkt kommen, wo diese Abstraktion nicht funktioniert. Beispielsweise beim Verwenden von Methoden als Funktionsobjekte (addEventListener, setTimeout, forEach). Dann benötigt man Function Binding bzw. Closures. Was hat das mit Klassen zu tun? Nichts, es ist funktionale Programmierung. Funktionen sind Objekte erster Klasse und »this« hat erst einmal gar nichts mit Pseudoklassen zu tun. Die klassenbasierte Sprache ActionScript 3 löst das, indem sie Klassenmethoden automatisch bindet, wenn diese funktional verwendet werden. Das tut JavaScript eben nicht. Man kann das für den Programmierer auch nur minimal vereinfachen. Für alle Methoden den Kontext zu erzwingen, würde wieder andere Probleme mit sich bringen.
Mathias