JavaScript метод isSealed()

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

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

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

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

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

Спецификация: ecma262

Поддерживается во всех основных браузерах с 2015 года.

Показать браузеры
Совместимостьjavascript.builtins.Object.isSealed
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
isSealed✓6✓12✓4✓12✓5.1✓18✓4✓12✓5✓1.0✓4.4✓5

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис:

JavaScript
Object.isSealed( obj );

Версия JavaScript

ECMAScript 5.1 (реализовано в JavaScript 1.8.5)

Значения параметров

Параметр Описание
obj Целевой объект, который проверяется. Обязательное значение.

Исключения

Тип исключения Описание
TypeError Возникает в том случае, если значение параметра, определяющее целевой объект не является объектом. Начиная с версии ECMAScript 6 параметр, который не является объектом будет сначала приведён к объекту.

Пример использования

isSealed() — пример 1

Измените исходные значения или аргументы метода и нажмите ▶. Сравните результат в консоли.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
// инициализируем переменную, содержащую объект
let obj = {
    a: 1,
    b: 2,
}

// определяем является ли объект нерасширяемым и с недоступными для настройки свойствами
console.log(Object.isSealed(obj)) // false

// запечатываем объект
console.log(Object.seal(obj))

// определяем является ли объект нерасширяемым и с недоступными для настройки свойствами
console.log(Object.isSealed(obj)) // true

В этом примере мы инициализировали переменную, содержащую объект и с помощью метода isSealed() проверяем является ли объект нерасширяемым и с недоступными для настройки свойствами. После этого мы с помощью метода seal() запечатываем объект и снова используем метод isSealed().

В следующем примере мы рассмотрим как сделать объект нерасширяемым и с недоступными для настройки свойствами без использования метода seal().

isSealed() — пример 2

Измените исходные значения или аргументы метода и нажмите ▶. Сравните результат в консоли.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
// инициализируем переменную, содержащую объект
let obj = {
    a: 1,
}

console.log(Object.isSealed(obj)) // false

// изменяем в объекте свойство данных
console.log(
    Object.defineProperty(obj, 'a', {
        // устанавливаем, что удаление свойства не допускается, а также не допускается изменение дескриптора этого свойства
        configurable: false,
    }),
)
console.log(Object.preventExtensions(obj)) // делаем объект нерасширяемым

console.log(Object.isSealed(obj)) // true

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