|

Preventing Data From Mutation with Freeze Method (javascript mutation)

In JavaScript, we declare variables with CONST when we want to protect it from mutation. But CONST declaration alone is not enough to protect really.

Firstly let’s see data protection with CONST:

const array = [1, 2, 3];
array = [4, 5, 6]; // yes, it works! We can not mutate data but ...
array[0] = 4; // hmmm, now we have an alternative way to mutate data.
console.log(array); // returns [4, 2, 3]

As you see there is an alternative way to mutate CONST data. So what about if you really wat your data to be frozen?

const array = [1, 2, 3];

array = [4, 5, 6]; // yes, it works! We can not mutate data but ...
array[0] = 4; // hmmm, now we have an alternative way to mutate data.

console.log(array); // returns [4, 2, 3]

Object.freeze(array); // The array cannot be modified.
array[0] = 1; // fails

You can use Object.freeze for arrays but ES5 can freeze only objects and throws an error. ES6 enables to freeze non-objects, too.

Freeze method also blocks push, pop, shift and unshift methods 🙂

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *