Метод Object.isSealed()
визначає, чи є об'єкт запечатаним.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Синтаксис
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