UNPKG

deep-freeze-strict

Version:

recursively Object.freeze() objects and functions, works in strict mode

19 lines (15 loc) 534 B
module.exports = function deepFreeze (o) { Object.freeze(o); var oIsFunction = typeof o === "function"; var hasOwnProp = Object.prototype.hasOwnProperty; Object.getOwnPropertyNames(o).forEach(function (prop) { if (hasOwnProp.call(o, prop) && (oIsFunction ? prop !== 'caller' && prop !== 'callee' && prop !== 'arguments' : true ) && o[prop] !== null && (typeof o[prop] === "object" || typeof o[prop] === "function") && !Object.isFrozen(o[prop])) { deepFreeze(o[prop]); } }); return o; };