Rolf b: Verständnisfrage JavaScript getter und setter

Beitrag lesen

Meine Güte, da arbeitet man mal ein paar Stunden für die Brötchen und verpasst gleich eine heiße Diskussion :)

Ich werde in meinem Artikel noch genauer beschreiben, wo sich die Funktionen für Getter und Setter verstecken; aber im Wiki gibt's dazu durchaus schon knappe Infos, z.B. unter defineProperty und getOwnPropertyDescriptor - die ich dann auch ausbauen werde sofern mir keiner zuvorkommt :)

Die Methode mit kombinierten get/set Methoden - also farbe() liest und farbe('rot') schreibt - ist ein Notbehelf, den man in etlichen Bibliotheken findet, die eine möglichst breite Plattform abdecken wollen. Spontan fallen mir da jQuery und knockoutJs ein. Richtige syntaxgezuckerte Properties mit get und set - wie man sie beispielsweise aus C# kennt, sind das aber nicht. Die erstellt man in JS mit der get name() { bla } und set name(wert) {blah} Syntax, oder mit Object.defineProperty.

Dass der Typ Symbol in ES6 neu ist, wusste ich, habe mir den Sinn davon aber noch nicht angelesen. Jetzt weiss ich immerhin was man damit anstellen kann.

Der Nachteil von get/set Properties ist - wenn man KEINE Symbols hat - dass man sie zwingend auf der Objektinstanz definieren muss wenn sie private Daten verwenden sollen. Weil - man muss ja eine Closure erzeugen, die die Daten versteckt, und das muss pro Instanz geschehen. Muss man viele Objekte erzeugen, ist das eine böse Bremse. Wenn man get/set Properties auf dem Prototypen definiert, dann musste man bisher mit "private by convention" arbeiten, also Unterstrich-Properties. Die neue Nummer mit Symbols ist da richtig genial, das schau ich mir gerne noch an und arbeite es in meinen Artikel ein.

Gruß Rolf