Files
30-seconds-of-code/snippets/isDeepFrozen.md
Isabelle Viktoria Maciohsek 13e9057337 Add isDeepFrozen
2020-09-04 20:20:11 +03:00

592 B

title, tags
title tags
isDeepFrozen object,recursion,intermediate

Checks if an object is deeply frozen

Use recursion. Use Object.isFrozen() on the given object. Use Object.keys(), Array.prototype.every() to check that all keys are either deeply frozen objects or non-object values.

const isDeepFrozen = obj =>
  Object.isFrozen(obj) &&
  Object.keys(obj).every(
    prop => typeof obj[prop] !== 'object' || isDeepFrozen(obj[prop])
  );
const x = Object.freeze({ a: 1 });
const y = Object.freeze({ b: { c: 2 } });
isDeepFrozen(x); // true
isDeepFrozen(y); // false