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

В чем разница между способами запретить изменение свойства объекта

Есть несколько способов запретить изменение свойства объекта в JavaScript:

  1. Object.defineProperty() - делает свойство неизменяемым:
js
const obj = {};
Object.defineProperty(obj, 'prop', {
  value: 42,
  writable: false
});
obj.prop = 100; // Не изменится в strict mode будет ошибка
  1. Object.freeze() - замораживает весь объект:
js
const obj = { prop: 42 };
Object.freeze(obj);
obj.prop = 100; // Не изменится
  1. const - запрещает переопределение переменной, но не свойства:
js
const obj = { prop: 42 };
obj = {}; // Ошибка
obj.prop = 100; // Работает
  1. Object.seal() - запрещает добавление/удаление свойств, но позволяет изменять существующие:
js
const obj = { prop: 42 };
Object.seal(obj);
obj.prop = 100; // Работает
obj.newProp = 1; // Не добавится

Object.freeze() - самый строгий вариант, полностью запрещает изменения.

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

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

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

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