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);
}- ✓Правильна відповідь: Рекурсивно заморозити вкладені об'єкти, а потім сам об'єкт
- 2Викликати
Object.freeze(obj, { deep: true }) - 3Застосувати
Object.seal, він працює на всю глибину
Пояснення
Object.freeze неглибокий, а Object.seal лише забороняє додавати й видаляти властивості. Рекурсія обходить дерево; для циклічних посилань варто зберігати відвідані об'єкти у WeakSet. Опції deep у freeze немає.