Yes, it is possible to deeply freeze an object in JavaScript using the Object.freeze()
method recursively on all its nested properties. Here is an example code snippet to achieve this:
function deepFreeze(obj) {
Object.freeze(obj);
Object.getOwnPropertyNames(obj).forEach(prop => {
if (obj.hasOwnProperty(prop) && obj[prop] !== null && (typeof obj[prop] === "object" || typeof obj[prop] === "function") && !Object.isFrozen(obj[prop])) {
deepFreeze(obj[prop]);
}
});
return obj;
}
const obj = {
prop1: {
nestedProp: {
array: [1, 2, 3]
}
},
prop2: "hello"
};
deepFreeze(obj);
// Trying to modify any properties of the object would fail silently in strict mode
obj.prop2 = "world"; // This would have no effect
obj.prop1.nestedProp.array.push(4); // This would also have no effect
Asked: 2022-10-27 11:00:00 +0000
Seen: 9 times
Last updated: Sep 10 '21