dedlfix: OOP-Propertys mit Accessor

Beitrag lesen

Tach!

Symbols wird es in ECMAScript 6 geben und würden dein Problem elegant lösen:
https://github.com/lukehoban/es6features#symbols
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-constructor-class

Da steig ich jetzt noch nicht so richtig durch. Da sind zwar Beschreibungen zum Implementation, aber ich sehe nicht so recht, für welches Problem dieses Feature erfunden wurde. Ist es so, dass damit Property-Namen nichtmehr durch Strings repräsentiert werden (können), sondern durch einen Identifizierer, der von außerhalb nicht bekannt ist, weil er nur in einer privaten Variable gespeichert ist?

function setData(obj, data, names) {
Mir gefällt nicht sonderlich, dass sie global rumliegt. Anderseits, sie an Object.prototype anzuhängen, macht es nicht viel besser.
Richtig, deshalb gibt es Object.assign in ES6.

Naja, damit holt man sich Tod und Teufel in sein Objekt rein und überschreibt alles, was das andere Objekt so mitbringt. Ich geb ja noch an, welche Eigenschaften mich interessieren beziehungsweise zugelassen sind.

Ich halte beides für vertretbar. Pseudo-private Eigenschaften halte ich für ausreichend. Sie sind performanter [...] Und sie erlauben ein einfaches Debugging, da die Eigenschaft im Zweifelsfall von außen zugänglich ist.

Das sind gute Argumente, vor allem die Sichtbarkeit beim Debugging. Es sind ja in meinem Fall mit dem einen Objekt auch nicht so viele, dass sie die Autovervollständigung zumüllen. Ich nehm dann mal Variante Qux.

Letztlich sind »private« Eigenschaften in vielen anderen Sprachen nicht wirklich privat.

Ja, Zugriffsmodifizierer sind für mich auch nur Anwendungshinweise und kein Sicherheitsfeature.

dedlfix.