Aber ich frage mich, warum du nicht die klassische Schreibweise ohne Prototyp-Objekt wählst
Gut, weil du die Objekte nachträglich außerhalb des Konstruktors prototypisch um private Methoden erweitern willst. Das geht zwar, wie du demonstriert hast, sie sind dann aber nur für die hinzugefügten öffentlichen Methoden verfügbar und Zugriff auf die Instanz hast du an dieser Stelle nicht.
Der Konstruktor und die öffentlichen Methoden sind wie gesagt die einzigen Stellen, wo du Zugriff auf die Instanz hast. Und die ganze Magie von privaten Membern in JavaScript liegt in Closures:
- Öffentliche und private Methoden haben Zugriff auf die Instanz; öffentliche über this, private über eine Referenz, die sie als Closure einschließen.
- Alle öffentlichen Methoden haben Zugriff auf die private Member, weil sie sie als Closure einschließen.
Diese Voraussetzungen hast du nur im Konstruktor, wenn du dort alle privaten und alle öffentlichen Member notierst.
Möglicherweise gibt es Helferfunktionen zum Erzeugen von Konstruktoren, mit denen das Hinzufügen von privaten Membern möglich ist. Dann sähe der Zugriff auf sie aber auch ganz anders aus.
Mathias