Object.freeze
Запрещает любые изменения объекта.
Доступно с: ES5
Синтаксис
Object.freeze(obj)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| obj | object | Объект, который нужно заморозить. |
Возвращаемое значение
objectТот же объект, уже замороженный.
Примеры
Изменения молча игнорируются:
const config = Object.freeze({ port: 3000 });
config.port = 8080;
config.host = 'localhost';
console.log(config);Результат:
{
"port": 3000
}В строгом режиме (в модулях и классах) изменение вызывает ошибку:
'use strict';
const config = Object.freeze({ port: 3000 });
try {
config.port = 8080;
} catch (error) {
console.log(error.name);
}Результат:
TypeErrorПримечания
Заморозка поверхностная: вложенные объекты можно менять, если не заморозить и их.
const и Object.freeze() — разные вещи: const запрещает присвоить переменной другой объект, а freeze запрещает менять сам объект.
См. также
- Object.isFrozen — Проверяет, заморожен ли объект.
- Object.seal — Запрещает добавлять и удалять свойства, но разрешает менять существующие.
- const — Объявляет переменную, которой нельзя присвоить новое значение.
Вопросы и ответы по теме
В учебнике
- Неизменяемость данных — Изменяемые и неизменяемые данные в JavaScript: ссылки на объекты, копирование через spread, методы toSorted и with, Object.freeze и structuredClone.