Files
30-seconds-of-code/test/deepFreeze/deepFreeze.js
Stefan Feješ f1fb6aadb5 add deepFreeze
2018-08-25 17:54:16 +02:00

18 lines
387 B
JavaScript

const deepFreeze = obj => {
Object.freeze(obj);
Object.getOwnPropertyNames(obj).forEach(function(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;
};
module.exports = deepFreeze;