deeply-freeze
Version:
Deeply freeze Objects efficiently
22 lines • 820 B
JavaScript
/* Created by Ben Carp */
var isAnObject = function (something) { return (typeof something === "object" && something !== null); };
var forVal = function (obj) { return function (fun) { return Object.keys(obj).forEach(function (key) { return fun(obj[key]); }); }; };
var _IS_DEEPLY_FROZEN = "_isDeeplyFrozen";
var deepFreeze = function (obj) {
if (!isAnObject(obj))
throw Error;
forVal(obj)(function (propVal) {
if (!isAnObject(propVal))
return;
if (propVal.hasOwnProperty(_IS_DEEPLY_FROZEN))
return;
deepFreeze(propVal);
});
Object.defineProperty(obj, _IS_DEEPLY_FROZEN, {
enumerable: false,
writable: false,
});
return Object.freeze(obj);
};
export default deepFreeze;
//# sourceMappingURL=index.js.map