Object.seal()
Запечатывание. Создает «запечатанный» объект -- то есть принимает существующий объект и по сути применяет к немуObject.preventExtensions(..)
, но также помечает все существующие свойства какconfigurable:false
.
Таким образом, вы не можете не только добавлять свойства, но и переконфигурировать или удалить существующие (хотя вы всё ещеможетеизменять их значения).
Функция Object.seal()
делает объект o нерасширяемым (Object.preventExtensions()
), а все его собственные свойства – ненастраиваемыми. Это предотвращает добваление новых свойств и удаление существующих. Действие этой функции необратимо: нерасширяемый объект с ненастраиваемыми свойствами нельзя вновь сделать расширяемым объектом. Имейте в виду, что Object.seal()
не делает свойства объекта доступными только для чтения; используйте для этого функцию Object.freeze()
. Отметьте также, что Object.seal()
не воздействует на унаследованные свойства. Если в цепочке прототипов объекта, обработанного функцией Object.seal()
, имеется расширяемый и настраиваемый объект, тогда имеется возможность добавлять и удалять наследуемые им свойства.
Синтаксис:
Object.seal(o)
Object.isSealed()
Возможно ли добавлять в объект новые и удалять существующие свойства?
Синтаксис:
Object.isSealed(o)
Возвращаемое значение: true
, если объект o
является нерасширяемым, с недоступными для настройки свойствами, и false
– если нет.
Объект считается нерасширяемым, с недоступными для настройки свойствами, если в него нельзя добавить новые (неунаследованные) свойства и нельзя удалить существующие (неунаследованные) свойства. Функция Object.isSealed()
проверяет, является ли ее аргумент нерасширяемым объектом, с недоступными для настройки свойствами, или нет. Недоступные для настройки свойства нельзя вновь сделать настраиваемыми. Обычно такие объекты получают с помощью функции Object.seal() или Object.freeze()
. Однако того же эффекта можно добиться спомощью функции Object.preventExtensions()
, с последующим вызовом Object.defineProperty()
, чтобы сделать все свойства объекта неудаляемыми.