Manipulacja obiektami w JavaScript - Object - JS
Zamrażanie obiektu w JavaScript - freeze
Co zrobić, aby zamrozić obiekt w taki sposób, aby nie można go było już zmieniać?
(interpretuje: Internet Explorer 9, Firefox 4, Opera 12, Chrome 6)
Object.freeze(O)
- Parametry:
Object
O - obiekt- Wartość:
- O - przekazany obiekt
- Wyjątki:
TypeError
- wartość O nie jest obiektem
Wywołanie tej funkcji na podanym obiekcie sprawia, że nie będzie można dla niego definiować więcej żadnych deskryptorów właściwości, dodawać żadnych nowych właściwości, usuwać istniejących właściwości ani zmieniać im wartości. Mówimy, że obiekt został zamrożony (ang. freeze), tzn. jego struktura i dane pozostaną niezmienne.
Przykład Object.freeze
var obj = Object.defineProperty({p: 1}, "x", {configurable: true}); delete obj.p; obj.p; // undefined obj.test = 3; Object.freeze(obj); obj.test; // 3 obj.test = 2; obj.test; // 3 delete obj.test; obj.test; // 3 obj.p = 1; obj.p; // undefined Object.defineProperty(obj, "x", {configurable: true}); // TypeError Object.defineProperty(obj, "p", {}); // TypeError Object.freeze(true); // TypeError Object.freeze(1); // TypeError Object.freeze("test"); // TypeError Object.freeze(null); // TypeError