Методы Object.freeze()
и Object.seal()
оба используются для ограничения изменяемости объектов в JavaScript, но есть некоторые различия между ними.
Метод Object.freeze()
делает объект полностью неизменяемым, т.е. запрещает добавление, удаление и изменение свойств объекта. Все свойства объекта становятся неизменяемыми, а сам объект не может быть изменен. Например:
const person = {
firstName: "John",
lastName: "Doe",
}
Object.freeze(person)
person.firstName = "Jane" // Запрещено
delete person.lastName // Запрещено
person.age = 30 // Запрещено
console.log(person) // { firstName: 'John', lastName: 'Doe' }
Метод Object.seal()
также делает объект частично неизменяемым, но разрешает изменение значений свойств объекта. Метод Object.seal()
запрещает добавление новых свойств и удаление существующих свойств объекта, но позволяет изменять значения существующих свойств. Например:
const person = {
firstName: "John",
lastName: "Doe",
}
Object.seal(person)
person.firstName = "Jane" // Разрешено
delete person.lastName // Запрещено
person.age = 30 // Запрещено
console.log(person) // { firstName: 'Jane', lastName: 'Doe' }
Таким образом, основное отличие между Object.freeze()
и Object.seal()
заключается в том, что метод Object.freeze()
делает объект полностью неизменяемым, а метод Object.seal()
разрешает изменение значений существующих свойств объекта.
Оба метода могут быть полезными, когда мы хотим предотвратить изменение основной структуры объекта, но различия в их поведении могут быть важны в зависимости от конкретной задачи.