Object.isSealed()

Метод Object.isSealed() визначає, чи є об'єкт запечатаним.

Синтаксис

Object.isSealed(obj)

Параметри

obj
Об'єкт, який треба перевірити.

Значення, що повертається

Булеве значення, що вказує, чи є об'єкт запечатаним.

Опис

Повертає true, якщо об'єкт запечатаний, інакше повертає false. Об'єкт вважається запечатаним, якщо він нерозширюваний та якщо всі його властивості недоступні для налаштування і, відповідно, недоступні для видалення (але не обов'язково недоступні для запису).

Приклади

// За замовчуванням об'єкти не запечатані.
var empty = {};
Object.isSealed(empty); // === false

// Якщо зробити порожній об'єкт нерозширюваним,
// він стає порожньо запечатаним.
Object.preventExtensions(empty);
Object.isSealed(empty); // === true

// Те саме стосується непорожнього об'єкта,
// хіба що усі його властивості недоступні для налаштування.
var hasProp = { fee: 'Крибле крабле бум' };
Object.preventExtensions(hasProp);
Object.isSealed(hasProp); // === false

// Але зробимо їх усі недоступними для налаштування,
// і об'єкт стає запечатаним.
Object.defineProperty(hasProp, 'fee', {
  configurable: false
});
Object.isSealed(hasProp); // === true

// Звісно, найпростіший спосіб запечатати об'єкт -
// це Object.seal.
var sealed = {};
Object.seal(sealed);
Object.isSealed(sealed); // === true

// Запечатаний об'єкт, за визначенням, нерозширюваний.
Object.isExtensible(sealed); // === false

// Запечатаний об'єкт може бути замороженим,
// але це не обов'язково.
Object.isFrozen(sealed); // === true
// (усі властивості також недоступні для запису)

var s2 = Object.seal({ p: 3 });
Object.isFrozen(s2); // === false
// ('p' досі доступна для запису)

var s3 = Object.seal({ get p() { return 0; } });
Object.isFrozen(s3); // === true
// (для аксесорів має значення тільки доступність для налаштування)

Примітки

У ES5 якщо аргументом цього методу є не об'єкт (примітив), це спричинить TypeError. У ES2015 аргумент, що не є об'єктом, сприйматиметься як звичайний запечатаний об'єкт, метод просто поверне true.

Object.isSealed(1);
// TypeError: 1 is not an object (код ES5)

Object.isSealed(1);
// true                          (код ES2015)

Специфікації

Специфікація Статус Коментар
ECMAScript 5.1 (ECMA-262)
The definition of 'Object.isSealed' in that specification.
Standard Початкове визначення. Реалізоване у JavaScript 1.8.5.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Object.isSealed' in that specification.
Standard
ECMAScript (ECMA-262)
The definition of 'Object.isSealed' in that specification.
Living Standard

Сумісність з веб-переглядачами

BCD tables only load in the browser

Див. також