--- title: Object.isSealed() slug: Web/JavaScript/Reference/Global_Objects/Object/isSealed tags: - ECMAScript 5 - JavaScript - Об'єкт - метод translation_of: Web/JavaScript/Reference/Global_Objects/Object/isSealed ---
Метод Object.isSealed()
визначає, чи є об'єкт запечатаним.
Object.isSealed(obj)
obj
{{jsxref("Boolean","Булеве значення")}}, що вказує, чи є об'єкт запечатаним.
Повертає true
, якщо об'єкт запечатаний, інакше повертає false
. Об'єкт вважається запечатаним, якщо він {{jsxref("Object.isExtensible", "нерозширюваний", "", 1)}} та якщо всі його властивості недоступні для налаштування і, відповідно, недоступні для видалення (але не обов'язково недоступні для запису).
// За замовчуванням об'єкти не запечатані. 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 якщо аргументом цього методу є не об'єкт (примітив), це спричинить {{jsxref("TypeError")}}. У ES2015 аргумент, що не є об'єктом, сприйматиметься як звичайний запечатаний об'єкт, метод просто поверне true
.
Object.isSealed(1); // TypeError: 1 is not an object (код ES5) Object.isSealed(1); // true (код ES2015)
Специфікація | Статус | Коментар |
---|---|---|
{{SpecName('ES5.1', '#sec-15.2.3.11', 'Object.isSealed')}} | {{Spec2('ES5.1')}} | Початкове визначення. Реалізоване у JavaScript 1.8.5. |
{{SpecName('ES6', '#sec-object.issealed', 'Object.isSealed')}} | {{Spec2('ES6')}} | |
{{SpecName('ESDraft', '#sec-object.issealed', 'Object.isSealed')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.builtins.Object.isSealed")}}