JavaScript метод isSealed()
JavaScript ObjectОпределение и применение
JavaScript метод isSealed() возвращает логическое значение, которое определяет является ли объект нерасширяемым и с недоступными для настройки свойствами, или нет.
Под нерасширяемым объектом стоит понимать тот объект в котором недоступно добавление в него новых собственных свойств.
Под ненастраиваемыми свойствами стоит понимать те, атрибут configurable которых имеет значение false, в этом случае удаление такого свойства из содержащего его объекта, а также в дальнейшем изменение дескриптора этого свойства запрещается. Атрибуты в свою очередь описываются дескрипторами свойств – это обычные объекты JavaScript, которые описывают атрибуты и значение свойства. Подробную информацию о дескрипторах свойств и атрибутах вы можете получить в описании метода defineProperty(), который позволяет определить новое или изменить существующее свойство объекта, описывая его дескрипторами.
Чтобы сделать объект нерасширяемым и с недоступными для настройки свойствами вы можете воспользоваться методами seal(), или freeze().
Поддержка браузерами
Метод | Chrome | Firefox | Opera | Safari | IExplorer | Edge |
---|---|---|---|---|---|---|
isSealed() | 6.0 | 4.0 | 12.0 | 5.1 | 9.0 | Да |
JavaScript синтаксис:
Object.isSealed( obj );
Версия JavaScript
ECMAScript 5.1 (реализовано в JavaScript 1.8.5)Значения параметров
Параметр | Описание |
---|---|
obj | Целевой объект, который проверяется. Обязательное значение. |
Исключения
Тип исключения | Описание |
---|---|
TypeError | Возникает в том случае, если значение параметра, определяющее целевой объект не является объектом. Начиная с версии ECMAScript 6 параметр, который не является объектом будет сначала приведён к объекту. |
Пример использования
// инициализируем переменную, содержащую объект let obj = { a: 1, b: 2 }; // определяем является ли объект нерасширяемым и с недоступными для настройки свойствами Object.isSealed( obj); // false // запечатываем объект Object.seal( obj ); // определяем является ли объект нерасширяемым и с недоступными для настройки свойствами Object.isSealed( obj ); // true
В этом примере мы инициализировали переменную, содержащую объект и с помощью метода isSealed() проверяем является ли объект нерасширяемым и с недоступными для настройки свойствами. После этого мы с помощью метода seal() запечатываем объект и снова используем метод isSealed().
В следующем примере мы рассмотрим как сделать объект нерасширяемым и с недоступными для настройки свойствами без использования метода seal().
// инициализируем переменную, содержащую объект let obj = { a: 1 }; Object.isSealed( obj ); // false // изменяем в объекте свойство данных Object.defineProperty( obj, "a", { // устанавливаем, что удаление свойства не допускается, а также не допускается изменение дескриптора этого свойства configurable: false }); Object.preventExtensions( obj ); // делаем объект нерасширяемым Object.isSealed( obj ); // true
В этом примере мы инициализируем переменную, содержащую объект, с помощью метода defineProperty() изменяем в этом объекте свойство данных (устанавливаем, что удаление свойства не допускается, а также не допускается изменение дескриптора этого свойств, и с помощью метода preventExtensions() делаем объект нерасширяемым (недоступно добавление в него новых собственных свойств). После этого с помощью метода isSealed() мы проверяем является ли наш объект нерасширяемым и с недоступными для настройки свойствами.
JavaScript Object