JavaScript метод isSealed()

JavaScript Object

Определение и применение

JavaScript метод isSealed() возвращает логическое значение, которое определяет является ли объект нерасширяемым и с недоступными для настройки свойствами, или нет.

Под нерасширяемым объектом стоит понимать тот объект в котором недоступно добавление в него новых собственных свойств.

Под ненастраиваемыми свойствами стоит понимать те, атрибут configurable которых имеет значение false, в этом случае удаление такого свойства из содержащего его объекта, а также в дальнейшем изменение дескриптора этого свойства запрещается. Атрибуты в свою очередь описываются дескрипторами свойств – это обычные объекты JavaScript, которые описывают атрибуты и значение свойства. Подробную информацию о дескрипторах свойств и атрибутах вы можете получить в описании метода defineProperty(), который позволяет определить новое или изменить существующее свойство объекта, описывая его дескрипторами.


Чтобы сделать объект нерасширяемым и с недоступными для настройки свойствами вы можете воспользоваться методами seal(), или freeze().


Поддержка браузерами

МетодChrome
Chrome
Firefox
Firefox
Opera
Opera
Safari
Safari
Internet Explorer
IExplorer
Microsoft Edge
Edge
isSealed()6.04.012.05.19.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