Встречается на собеседованиях • сегодня

Как сделать поля в объекте неизменяемыми

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

Для глубокого замораживания нужна рекурсивная функция:

javascript
const deepFreeze = (obj) => {
  Object.freeze(obj);
  Object.keys(obj).forEach(key => {
    if (typeof obj[key] === 'object' && !Object.isFrozen(obj[key])) {
      deepFreeze(obj[key]);
    }
  });
  return obj;
};

const user = deepFreeze({
  name: 'John',
  address: { city: 'New York' }
});

user.name = 'Pete'; // Не сработает
user.address.city = 'Boston'; // Тоже не сработает

Альтернативно можно использовать Object.defineProperty() с writable: false для отдельных свойств. В TypeScript можно использовать модификатор readonly.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы