JavaScript · Senior · Запитання 21 з 75

Як глибоко заморозити об'єкт?

function deepFreeze(obj) {
  for (const value of Object.values(obj)) {
    if (value && typeof value === "object") deepFreeze(value);
  }
  return Object.freeze(obj);
}

Пояснення

Object.freeze неглибокий, а Object.seal лише забороняє додавати й видаляти властивості. Рекурсія обходить дерево; для циклічних посилань варто зберігати відвідані об'єкти у WeakSet. Опції deep у freeze немає.

Де почитати

Помилка в запитанні

JavaScript · Senior · запитання 21

Перевірте себе

Пройдіть тест JavaScript · Senior: запитання й варіанти перемішуються, а наприкінці - розбір помилок.

Пройти цей тест