// Deep freeze any objectconstfreeze=obj=>{// Does not need freezingif(typeofobj!=="object")returnobj;// Already frozenif(Object.isFrozen(obj))returnobj;// Freeze props recursively before freezing selffor(letkeyofObject.getOwnPropertyNames(obj)){if(Array.isArray(obj)&&key==="length")continue;obj[key]=typeofobj[key]==="object"?freeze(obj[key]):obj[key];}returnObject.freeze(obj);};
To use it:
constuser=freeze({name:'Sarah',friends:['John']});user.friends[0]='Tim';// Error as expected 🎉
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
I created a deep freeze method just like this! For a similar article I wrote last week. The snippet is part of my React state management library Statux:
To use it: