1.0.6 • Published 5 years ago

recur-freeze v1.0.6

Weekly downloads
4
License
CC-BY-SA-4.0
Repository
github
Last release
5 years ago

Recursive Freeze

Build Status Test Covarage Greenkeeper Latest Version

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.

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

6 years ago

1.0.0

6 years ago