Files
30-seconds-of-code/snippets/deepFreeze.md
銀桑 90b8f077fa hotfix: unfrozenObject in frozenObject return wrong value (#1207)
Update deepFreeze.md

Co-authored-by: Angelos Chalaris <chalarangelo@gmail.com>
2020-09-04 19:50:53 +03:00

660 B

title, tags
title tags
deepFreeze object,recursion,intermediate

Deep freezes an object.

Use Object.keys() to get all the properties of the passed object, Array.prototype.forEach() to iterate over them. Call Object.freeze(obj) recursively on all properties, applying deepFreeze() as necessary. Finally, use Object.freeze() to freeze the given object.

const deepFreeze = obj => {
  Object.keys(obj).forEach(prop => {
    if (typeof(obj[prop]) === 'object') deepFreeze(obj[prop]);
  });
  return Object.freeze(obj);
};
'use strict';

const o = deepFreeze([1, [2, 3]]);

o[0] = 3; // not allowed
o[1][0] = 4; // not allowed as well