Hallo,
Wenn man trotzdem zugreifen will, bemüht man eben Getter und Setter, wobei sich mir der Sinn dessen nicht ganz erschließt.
Auch darum geht es nicht. Nochmal es ging um klassenweite private Variabeln. Also nicht um wleche die von aussen sichtbar sein müssen.
Dein Beispiel läuft aber darauf hinaus. Wenn du verlangst, dass Methoden eines neu zugewiesenen Prototyps auf die private Variable zugreifen können sollen, dann ist das nunmal "von außen". Zur Zeit der Zuweisung des Prototyps sind die Variablen bereits privat. Eine Halbprivatheit gibt es nunmal nicht.
Klassenweite private Variablen kann man in JavaScript doch haben, nur nicht durch nachträglich eingeführte Methoden darauf zugreifen. Muss das überhaupt sein? Geht das in anderen OO-Sprachen? In C# z.B. kann man partielle Klassen deklarieren, aber zur Laufzeit neue Methoden einführen? Die dann auch noch Zugriff auf die privaten Variablen haben? Nicht das ich wüsste...
Warum das so ist, ist eine Grundlage der OOP. Wenn du nicht OO programmierst, brauchst du vielleicht keine Kapselung.
Kaplselung brauche ich auch manchmal. Closures funktioniern für meine Zwecke wunderbar, und ich ich sehe sie auch nicht als Umweg. Ist denn z.B. ein Get/Set oder eine private Klassenvariable wirklich etwas anderes als eine Closure?
Gruß, Don P