Hallo,
und hat auch nichts mit von außen effektiv nicht sichtbaren Interna zu tun.
Doch! Genau das ist der Sinn!
Noch einmal die Links, die ich bereits gepostet habe:
http://dmitrysoshnikov.com/ecmascript/chapter-7-1-oop-general-theory/#encapsulation
http://molily.de/js/organisation-instanzen.html#kapselung
Sprachen wie Ruby und Python haben einfach keine effektive Kapselung. Soweit ich weiß, gibt es bei C# und Java ebenfalls eine Möglichkeit, die Kapselung zu umgehen (Wikipedia). Ich finde gerade den Thread nicht wieder, wo wir das schon einmal hier diskutiert haben.
Vor allem bei Ruby und Python ist es ein echtes Feature, dass private Methoden und Eigenschaften in Sonderfällen von außen zugänglich sind. Das widerspricht der Kapselung nicht grundsätzlich oder stellt ihre allgemeinen Nützlichkeit infrage.
red finde ich eigentlich ganz passend, es gibt den Rotanteil wieder, von daher sollte das Funktionsargument redMax heißen, m. M. n., aber die Bezeichner sind Geschmackssache.
Ja, wenn es den Rotanteil herausgeben würde, den man beim Erzeugen hineingegeben hat. Allerdings gibt sie erstens einen veränderten Wert zurück und ändert zudem den gespeicherten, sie ist also nicht »pure«.
Mathias