JavaScript метод Object.isExtensible()

Определение и применение

JavaScript метод isExtensible() возвращает логическое значение, которое определяет является ли объект расширяемым (доступно добавление новых собственных свойств), или нет. Если объект является расширяемым, то возвращаемое значение будет true, в обратном случае false.

Поддержка браузерами

Спецификация: ecma262

Поддерживается во всех основных браузерах с 2015 года.

Показать браузеры
Совместимостьjavascript.builtins.Object.isExtensible
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
isExtensible✓6✓12✓4✓12✓5.1✓18✓4✓12✓5✓1.0✓4.4✓5

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис

JavaScript
Object.isExtensible( obj );

Спецификация

ECMAScript: Object.isExtensible()

Значения параметров

Object: справочные сведения
Параметр Описание
obj Целевой объект, который необходимо проверить. Обязательное значение.

Исключения

Object: справочные сведения
Тип исключения Описание
TypeError Примитивы не вызывают исключение: Object.isFrozen() и Object.isSealed() возвращают true, а Object.isExtensible() — false. Проверка прокси может выбросить исключение.

Примеры, попробуйте сами

В примере «Проверка до и после запрета расширения» показан результат вызова метода.

Проверка до и после запрета расширения

Измените свойства исходного объекта и сравните результат до и после вызова метода.

index.html
HTML
<!doctype html>
<html lang="ru">
  <head>
    <meta charset="UTF-8" />
    <title>Проверка до и после запрета расширения</title>
  </head>
  <body>
    <p>Результат выполнения выводится в консоль.</p>
  </body>
</html>
main.js
JavaScript
// инициализируем переменную, содержащую объект
let obj = {
    a: 1,
    b: 2,
    c: 3,
}
// проверяем является ли объект расширяемым
console.log(Object.isExtensible(obj)) // true

obj.d = 4 // добавляем свойство

// делаем объект нерасширяемым
Object.preventExtensions(obj)

obj.a = 100 // изменяем свойство
delete obj.c // удаляем свойство

console.log(obj) // {a: 100, b: 2, d: 4}

// пытаемся добавить свойство
obj.f = 5

console.log(obj) // {a: 100, b: 2, d: 4}

// проверяем является ли объект расширяемым
console.log(Object.isExtensible(obj)) // false

В этом примере мы инициализировали переменную, содержащую объект и с помощью метода isExtensible() мы проверяем является ли объект расширяемым. Получив подтверждение о том, что объект является расширяемым мы добавляем в него свойство d, и с помощью метода preventExtensions() делаем его нерасширяемым.

Далее мы изменяем свойство a объекта и удаляем свойство с, выводим содержимое объекта в консоль, и пытаемся добавить свойство f в объект. Затем снова выводим в консоль содержимое объекта, как вы можете заметить свойство f добавлено не было.

В заключении примера с помощью метода isExtensible() мы проверяем является ли наш объект расширяемым, в результате чего мы получаем значение false, которое свидетельствует о том, что наш объект является нерасширяемым.