Object.isExtensible()

Метод Object.isExtensible() визначає, чи є об'єкт розширюваним (чи може він бути доповнений новими властивостями).

Синтаксис

Object.isExtensible(obj)

Параметри

obj
Об'єкт, який необхідно перевірити.

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

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

Опис

За замовчуванням об'єкти є розширюваними: нові властивості можуть додаватися до них, і (у рушіях, що підтримують __proto__ ) їхня властивість __proto__ може бути змінена. Об'єкт можна зробити нерозширюваним за допомогою Object.preventExtensions(), Object.seal() або Object.freeze().

Приклади

// Нові об'єкти є розширюваними.
var empty = {};
Object.isExtensible(empty); // === true

// ...але це можна змінити.
Object.preventExtensions(empty);
Object.isExtensible(empty); // === false

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

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

Примітки

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

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

Object.isExtensible(1);
// false                         (код ES2015)

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

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

BCD tables only load in the browser

Див. також