Gibt es eine Möglichkeit, eine ES6 Map einzufrieren?

8

Ich suche nach einer Möglichkeit, native ES6 Maps einzufrieren.

Object.freeze und Object.seal scheint nicht zu funktionieren:

%Vor%

Ist dies das beabsichtigte Verhalten, da die Freeze-Freeze-Eigenschaften von objects und maps keine objects sind oder könnte dies ein Fehler sein / noch nicht implementiert?

Und ja, ich weiß, ich sollte wahrscheinlich Immutable.js verwenden, aber gibt es eine Möglichkeit, dies zu tun? native ES6 Karten?

    
Tieme 02.03.2016, 12:30
quelle

2 Antworten

4

@loganfsmyth , Ihre Antwort gab mir eine Idee, was ist damit:

%Vor%

Das funktioniert perfekt für mich :)

Aktualisiert mit Punkten aus @Bergi in den Kommentaren:

%Vor%     
Tieme 03.03.2016, 15:31
quelle
5

Gibt es nicht, Sie könnten einen Wrapper dafür schreiben. Object.freeze sperrt die Eigenschaften eines Objekts, während Map -Instanzen Objekte sind, sind die Werte, die sie speichern, keine Eigenschaften. Das Einfrieren hat also keine Auswirkungen auf sie, genau wie jede andere Klasse, deren interner Status versteckt ist.

In einer echten ES6-Umgebung, in der das Erweitern von Builtins unterstützt wird ( nicht Babel ), können Sie dies tun:

%Vor%

Wenn Sie in ES5-Umgebungen arbeiten müssen, können Sie ganz einfach eine Wrapper-Klasse für Map erstellen, anstatt die Klasse Map zu erweitern.

    
loganfsmyth 02.03.2016 16:56
quelle