kilto
Version:
A state management system with easy async and low boilerplate.
18 lines (14 loc) • 451 B
JavaScript
export default function deepFreeze(obj) {
// Retrieve the property names defined on obj
const propNames = Object.getOwnPropertyNames(obj);
// Freeze properties before freezing self
propNames.forEach((name) => {
const prop = obj[name];
// Freeze prop if it is an object
if (typeof prop === 'object' && prop !== null) {
deepFreeze(prop);
}
});
// Freeze self (no-op if already frozen)
return Object.freeze(obj);
}