Immutable Objects in Javascript

An immutable object is one whose state cannot and will not change after it’s initial creation.

Assuming that you already know the importance of the immutable object. let's dive directly into how to achieve that.

What is an object in javascript? : Object in javascript can be represented by an entity having different properties and behaviour/methods.

let name = {
firstName: "Virender",
lastName: "Sehwag",

By Immutability, I am not referring to const in javascript. As arrays and objects defined with const can be changed like

const arr = [1,2,3];
arr[3] = 4;
console.log(arr); // [1,2,3,4];

const obj = {firstName="Virat"}
obj.lastName = "Kohli";
console.log(obj); // {firstName="Virat", lastName="Kohli"}

I am talking about complete immutability.

We can achieve immutability by 3 different methods and of different level.


If we pass an object in this method then we cannot add a new property, delete a property, or even update a current property.

Trying to make any changes mentioned above after an object being frozen will fail and will throw errors in strict mode.

let name = {
firstName: "Virender",
lastName: "Sehwag",

Object.isFrozen() is an Object method to check if an object is frozen by passing the object as the argument.

Object.isFrozen(name);    // true


This method seals the current object properties and methods. We cannot add any new properties and methods but we can change the current properties and methods.

These sealed object properties cannot be deleted.

let name = {
firstName: "Virender",
lastName: "Sehwag",

Object.isSealed() is an Object method to check if an object is sealed by passing the object as the argument.

Object.isSealed(name);   // true


This is similar to Object.seal() in terms that in this also we cannot add any new property or method but we can change the existing once.

The difference between Object.seal() and Object.preventExtension() is that in preventExtesion() we can delete the current properties.

let name = {
firstName: "Jasprit",
lastName: "Bumrah",

Object.isExtensible() is an Object method to check if an object is extensible by passing the object as the argument.

Object.isExtensible(name);    // false

So as per the need, we can use these methods.

Full stack developer