Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: freeze, объект, seal

Назовите несколько способов создания неизменного объекта в JavaScript.

Этот вопрос проверяет понимание способов защиты объектов от изменений.

Короткий ответ

Существуют несколько способов сделать объект неизменным. Один из самых популярных — это метод Object.freeze(), который запрещает добавление, удаление и изменение свойств объекта. Также можно использовать Object.seal(), который позволяет изменять существующие свойства, но не добавлять новые. Для глубоких объектов применяют рекурсивное замораживание.

Длинный ответ

В JavaScript неизменяемые объекты важны, когда требуется защитить данные от случайных или преднамеренных изменений. Вот несколько способов создать такие объекты:

  • Object.freeze():
    Это наиболее известный метод для создания неизменного объекта. Он предотвращает любые изменения объекта — нельзя добавлять, удалять или изменять свойства. Однако, это работает только на уровне первого уровня объекта. Вложенные объекты останутся изменяемыми:

    const obj = { name: 'Alice' }; 
    Object.freeze(obj); 
    obj.name = 'Bob'; // Ошибка в строгом режиме, игнорируется в нестрогом 
    console.log(obj.name); // "Alice"
  • Object.seal():
    Этот метод запрещает добавление и удаление свойств, но позволяет изменять существующие. Это полезно, если вам нужно предотвратить изменение структуры объекта, но оставить возможность редактировать значения:

    const obj = { age: 25 }; 
    Object.seal(obj); 
    obj.age = 26; // Изменение разрешено 
    delete obj.age; // Не сработает 
    console.log(obj.age); // 26
  • Глубокое замораживание:
    Чтобы сделать объект и все его вложенные объекты неизменными, нужно применить Object.freeze() рекурсивно:

    function deepFreeze(obj) {
    	Object.freeze(obj);  
    	Object.keys(obj).forEach(key => {
    		if (typeof obj[key] === 'object' && obj[key] !== null) {  
    			deepFreeze(obj[key]);    
    		}  
    	}); 
    } 
    const nestedObj = { info: { age: 25 } }; 
    deepFreeze(nestedObj); 
    nestedObj.info.age = 30; // Изменение не произойдёт 
    console.log(nestedObj.info.age); // 25

Эти методы широко используются в приложениях, где важно гарантировать неизменность данных, например, в функциональном программировании или в архитектурах, таких как Redux, для управления состоянием приложения.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    3

  • Сложность:

    8

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#freeze

#объект

#seal

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию