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 Latest Draft (ECMA-262)
The definition of 'Object.isSealed' in that specification.
Draft

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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
isSealedChrome Full support 6Edge Full support 12Firefox Full support 4IE Full support 9Opera Full support 12Safari Full support 5.1WebView Android Full support YesChrome Android Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

Див. також