Назад к вопросам
Junior
138
questionbank
Что делает метод freeze в JavaScript?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Метод Object.freeze() замораживает объект, предотвращая добавление новых свойств, удаление существующих и изменение значений существующих свойств. Он также предотвращает изменение прототипа объекта. Замороженный объект остается неизменным.
Применение Object.freeze():
- Создание константных объектов: Гарантия того, что объект не будет изменен в дальнейшем коде.
- Повышение производительности: Некоторым движкам JavaScript легче оптимизировать доступ к неизменяемым объектам.
- Обеспечение безопасности: Защита внутренних данных объекта от случайных или злонамеренных изменений.
Важное примечание: Object.freeze() замораживает только поверхностно (shallow freeze). Если у свойств объекта есть ссылки на другие объекты, эти вложенные объекты могут быть изменены, если они сами не были заморожены.
Пример:
const obj = {
prop1: 42,
prop2: {
nestedProp: 'hello'
}
};
Object.freeze(obj);
// Попытки изменения будут проигнорированы в "строгом режиме"
// В нестрогом режиме они могут не вызвать ошибку, но изменения не произойдут
obj.prop1 = 100; // Не изменится
delete obj.prop1; // Не удалится
obj.newProp = 'world'; // Не добавится
console.log(obj.prop1); // 42
console.log(obj.newProp); // undefined
// Вложенный объект НЕ заморожен
obj.prop2.nestedProp = 'goodbye'; // Изменится
console.log(obj.prop2.nestedProp); // goodbye