Immutable Objects in Javascript

let name = {
firstName: "Virender",
lastName: "Sehwag",
getFullName() {
return firstName + " " + lastName;
},
};
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"}

Object.freeze()

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

let name = {
firstName: "Virender",
lastName: "Sehwag",
getFullName() {
return firstName + " " + lastName;
},
};
Object.freeze(name);name.middleName = "R"; // !!!ERROR!!! in strict mode
name.firstName = "Sachin"; // ERROR!!! in strict mode
Object.isFrozen(name);    // true

Object.seal()

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.

let name = {
firstName: "Virender",
lastName: "Sehwag",
getFullName() {
return firstName + " " + lastName;
},
};
Object.seal(name);name.middleName = "R"; // ERROR!!! in strict mode
name.firstName = "Sachin"; // Works!!!
delete name.lastName; // ERROR!!! in strict mode
Object.isSealed(name);   // true

Object.preventExtension()

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.

let name = {
firstName: "Jasprit",
lastName: "Bumrah",
getFullName() {
return firstName + " " + lastName;
},
};
Object.preventExtesion(name);name.middleName = "R"; // ERROR!!! in strict mode
name.firstName = "Sachin"; // Works!!!
delete name.lastName // true
Object.isExtensible(name);    // false

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store