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)

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

Специфікація Статус Коментар
ECMAScript 5.1 (ECMA-262)
The definition of 'Object.isExtensible' in that specification.
Standard Початкове визначення. Реалізоване у JavaScript 1.8.5.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Object.isExtensible' in that specification.
Standard
ECMAScript Latest Draft (ECMA-262)
The definition of 'Object.isExtensible' in that specification.
Draft

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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
isExtensibleChrome 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 18Firefox 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

Див. також