--- title: Object.isFrozen() slug: Web/JavaScript/Reference/Global_Objects/Object/isFrozen tags: - ECMAScript 5 - JavaScript - Об'єкт - метод - розширюваний translation_of: Web/JavaScript/Reference/Global_Objects/Object/isFrozen ---
{{JSRef}}

Метод Object.isFrozen() визначає, чи є об'єкт {{jsxref("Object.freeze()", "замороженим", "", 1)}}.

{{EmbedInteractiveExample("pages/js/object-isfrozen.html")}}

Синтаксис

Object.isFrozen(obj)

Параметри

obj
Об'єкт для перевірки.

Повертає

{{jsxref("Boolean", "Булеве значення")}}, що вказує, чи є наданий об'єкт замороженим.

Опис

Об'єкт є замороженим тільки тоді, коли він не є {{jsxref("Object.isExtensible()", "розширюваним", "", 1)}}, всі його властивості недоступні для налаштування, і всі його властивості-значення (тобто, властивості, які не є властивостями-аксесорами, що мають гетер або сетер) недоступні для запису.

Приклади

// Новий об'єкт є розширюваним, отже, він не заморожений
Object.isFrozen({}); // === false

// Пустий об'єкт, котрий є нерозширюваним,
// є порожньо замороженим.
var vacuouslyFrozen = Object.preventExtensions({});
Object.isFrozen(vacuouslyFrozen); // === true

// Новий об'єкт з однією властивістю є також розширюваним,
// отже, не заморожений.
var oneProp = { p: 42 };
Object.isFrozen(oneProp); // === false

// Припинення розширювання об'єкту не робить його замороженим,
// тому що властивість досі доступна
// для налаштування (та запису).
Object.preventExtensions(oneProp);
Object.isFrozen(oneProp); // === false

// ...але видалення цієї властивості робить об'єкт
// порожньо замороженим.
delete oneProp.p;
Object.isFrozen(oneProp); // === true

// Нерозширюваний об'єкт з властивістю, недоступною для запису,
// але доступною для налаштування, не є замороженим.
var nonWritable = { e: 'plep' };
Object.preventExtensions(nonWritable);
Object.defineProperty(nonWritable, 'e', {
  writable: false
}); // зробити властивість недоступною для запису
Object.isFrozen(nonWritable); // === false

// Якщо зробити цю властивість недоступною для налаштування,
// тоді об'єкт буде замороженим.
Object.defineProperty(nonWritable, 'e', {
  configurable: false
}); // зробити властивість недоступною для налаштування
Object.isFrozen(nonWritable); // === true

// Нерозширюваний об'єкт з властивістю, недоступною
// для налаштування, але доступною для запису, також не є замороженим.
var nonConfigurable = { release: 'the kraken!' };
Object.preventExtensions(nonConfigurable);
Object.defineProperty(nonConfigurable, 'release', {
  configurable: false
});
Object.isFrozen(nonConfigurable); // === false

// Якщо зробити цю властивість недоступною для запису,
// тоді об'єкт буде заморожений.
Object.defineProperty(nonConfigurable, 'release', {
  writable: false
});
Object.isFrozen(nonConfigurable); // === true

// Нерозширюваний об'єкт з властивістю-аксесором,
// доступною для налаштування, не є замороженим.
var accessor = { get food() { return 'ням'; } };
Object.preventExtensions(accessor);
Object.isFrozen(accessor); // === false

// ...але якщо зробити цю властивість недоступною для налаштування,
// тоді об'єкт буде замороженим.
Object.defineProperty(accessor, 'food', {
  configurable: false
});
Object.isFrozen(accessor); // === true

// Але найпростіший спосіб зробити об'єкт замороженим -
// це викликати на ньому метод Object.freeze.
var frozen = { 1: 81 };
Object.isFrozen(frozen); // === false
Object.freeze(frozen);
Object.isFrozen(frozen); // === true

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

// Також, за визначенням, заморожений об'єкт є запечатаним.
Object.isSealed(frozen); // === true

Примітки

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

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

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

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

Специфікація Статус Коментар
{{SpecName('ES5.1', '#sec-15.2.3.12', 'Object.isFrozen')}} {{Spec2('ES5.1')}} Початкове визначення. Реалізоване у JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.isfrozen', 'Object.isFrozen')}} {{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-object.isfrozen', 'Object.isFrozen')}} {{Spec2('ESDraft')}}

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

{{Compat("javascript.builtins.Object.isFrozen")}}

Дивіться також