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(), чтобы сделать все свойства объекта неудаляемыми.