Object.freeze

Object.freeze allows us to disable object mutation.

let movie1 = {
  name: 'Star Wars',
  episode: 7
};

let movie2 = Object.freeze(Object.assign({}, movie1));

movie2.episode = 8; // fails silently in non-strict mode,
                    // throws error in strict mode

console.log(movie1.episode); // writes 7
console.log(movie2.episode); // writes 7

One problem with this pattern however, is how much more verbose our code is and how difficult it is to read and understand what's actually going on with our data with all of the boilerplate calls to Object.freeze and Object.assign. We need some more sensible interface to create and interact with immutable data, and that's where Immutable.js fits in.

Note: Object.freeze is also very slow and should not be done with large arrays.

Last updated