using Object.freeze() and Object.isFrozen()
The approach recursively deep-freezes an object and its nested properties using Object.freeze() and Object.isFrozen(). This makes the object and its properties immutable, preventing changes.
Example: The example demonstrates a recursive deep-freezing function using Object.freeze() and Object.isFrozen() to make an object and its nested properties immutable, preventing modifications.
const obj1 = {
key1: "val1",
key2: "val2",
key3: ["val3", "val4", "val5"]
};
const deepFreeze = (obj1) => {
Object.keys(obj1).forEach((property) => {
if (
typeof obj1[property] === "object" &&
!Object.isFrozen(obj1[property])
)
deepFreeze(obj1[property]);
});
return Object.freeze(obj1);
};
deepFreeze(obj1);
console.log("Before Change");
console.log(obj1);
obj1.key3[0] = "val";
obj1.key3[1] = "val";
obj1.key3[2] = "val";
console.log("After Change");
console.log(obj1);
Output
Before Change { key1: 'val1', key2: 'val2', key3: [ 'val3', 'val4', 'val5' ] } After Change { key1: 'val1', key2: 'val2', key3: [ 'val3', 'val4', 'val5' ] }
How to deep-freeze an object in JavaScript ?
In this article, we will see what is the problem with objects in JavaScript and why we need to “deep-freeze” an object in JavaScript. We will also learn how to “deep-freeze” an object in JavaScript.