Ich suche nach einer Möglichkeit, native ES6 Maps einzufrieren.
Object.freeze
und Object.seal
scheint nicht zu funktionieren:
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?
@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% 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.
Tags und Links javascript ecmascript-6 immutability hashmap