Object.isExtensible()

Сводка

Метод Object.isExtensible() определяет, является ли объект расширяемым (то есть, можно ли к нему добавлять новые свойства).

Синтаксис

Object.isExtensible(obj)

Параметры

obj

Проверяемый объект.

Описание

Объекты являются расширяемыми по умолчанию: к ним можно добавлять новые свойства и (в движках, поддерживающих свойство Object.prototype.__proto__) их можно изменять. Объект может быть помечен, как не изменяемый с помощью методов Object.preventExtensions(), Object.seal() или Object.freeze().

Примеры

js
// Новые объекты являются расширяемыми.
var empty = {};
assert(Object.isExtensible(empty) === true);

// ...но это может быть изменено.
Object.preventExtensions(empty);
assert(Object.isExtensible(empty) === false);

// Запечатанные объекты по определению не расширяемы.
var sealed = Object.seal({});
assert(Object.isExtensible(sealed) === false);

// Замороженные объекты также по определению не расширяемы.
var frozen = Object.freeze({});
assert(Object.isExtensible(frozen) === false);

Примечания

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

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

> Object.isExtensible(1)
false                         // код ES6

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

Specification
ECMAScript Language Specification
# sec-object.isextensible

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также