README
Recursive Freeze
Freeze object recursively.
Installation
$ npm install recur-freeze
CDN
The library is available over a CDN:
<script src="https://unpkg.com/recur-freeze@latest/dist/recur-freeze.umd.js"></script>
<!-- Or the minified version -->
<script src="https://unpkg.com/recur-freeze@latest/dist/recur-freeze.umd.min.js"></script>
Usage
const recurFreeze = require("recur-freeze");
const jedi = {
name: "Luke Skywalker",
middleName: null,
age: 19,
address: {
street: "Moisture Farm",
planet: "Tatooine"
},
masters: ["Obi-Wan Kenobi", "Yoda"]
};
// Freeze the jedi object
recurFreeze(jedi);
// Can't change the property value
jedi.name = "Anakin Skywalker";
console.log(jedi.name); // Luke Skywalker
// Can't change the null property
jedi.middleName = "Starkiller";
console.log(jedi.middleName); // null
// Can't change the nested object property
jedi.address.planet = "Degobah";
console.log(jedi.address.planet); // Tatooine
// Can't change the array item
jedi.masters[1] = "Palpatine";
console.log(jedi.masters[1]); // Yoda
// Can't add a new property
jedi.address.postalCode = 12345;
console.log(jedi.address.postalCode); // undefined
// Can't add a new item to the array
jedi.masters[3] = 'Qui-Gon Jinn';
console.log(jedi.masters); // [ 'Obi-Wan Kenobi', 'Yoda' ]
// Can't delete the property
delete jedi.address.planet;
console.log(jedi.address.planet); // Tatooine
// Can't delete the array item
delete jedi.masters[1];
console.log(jedi.masters); // [ 'Obi-Wan Kenobi', 'Yoda' ]
Note that when you're using a strict
mode, any attempt on changing the frozen object will throw a TypeError
exception.
License
CC-BY-SA 4.0 ยท Risan Bagja Pradana
This package is based on code sample at MDN
Object.freeze
documentation by Mozilla Contributors.