--- title: Object.isExtensible() slug: Web/JavaScript/Reference/Global_Objects/Object/isExtensible tags: - ECMAScript5 - JavaScript - JavaScript 1.8.5 - Method - Object translation_of: Web/JavaScript/Reference/Global_Objects/Object/isExtensible ---
Метод Object.isExtensible()
определяет, является ли объект расширяемым (то есть, можно ли к нему добавлять новые свойства).
Object.isExtensible(obj)
obj
Объекты являются расширяемыми по умолчанию: к ним можно добавлять новые свойства и (в движках, поддерживающих свойство {{jsxref("Object.proto", "__proto__")}}) их можно изменять. Объект может быть помечен, как не изменяемый с помощью методов {{jsxref("Object.preventExtensions()")}}, {{jsxref("Object.seal()")}} или {{jsxref("Object.freeze()")}}.
// Новые объекты являются расширяемыми. 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, если аргумент метода не является объектом (является примитивным значением), будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES6 такой аргумент будет рассматриваться, как простой не расширяемый объект и метод просто вернёт false
.
> Object.isExtensible(1) TypeError: 1 is not an object // код ES5 > Object.isExtensible(1) false // код ES6
Спецификация | Статус | Комментарии |
---|---|---|
{{SpecName('ES5.1', '#sec-15.2.3.13', 'Object.isExtensible')}} | {{Spec2('ES5.1')}} | Изначальное определение. Реализована в JavaScript 1.8.5. |
{{SpecName('ES6', '#sec-object.isextensible', 'Object.isExtensible')}} | {{Spec2('ES6')}} |
{{Compat}}