Object.isExtensible()

O método Object.isExtensible() verifica se um objeto pode ser extendido (se é ou não possível adicinar novas propriedades).

Sintaxe

Object.isExtensible(obj)

Parâmetros

obj
O objeto a ser verificado.

Valor de retorno

Um valor booleano (Boolean) que indica se o objeto pode ser extendido.

Descrição

Objetos são extensíveis por padrão: novas propriedades podem ser adicionadas, e (em ambientes que suportam __proto__ ) a propriedade __proto__ pode ser modificada. Um objeto pode ser marcado como não extensível usando Object.preventExtensions(), Object.seal(), ou Object.freeze().

Exemplos

// Novos objetos podem ser extendidos.
var empty = {};
Object.isExtensible(empty); // === true

// ...mas isso pode mudar.
Object.preventExtensions(empty);
Object.isExtensible(empty); // === false

// Objetos selados, não podem ser extendidos.
var sealed = Object.seal({});
Object.isExtensible(sealed); // === false

// Objetos congelados também não podem ser extendidos.
var frozen = Object.freeze({});
Object.isExtensible(frozen); // === false

Notas

No ES5, se o argumento fornecido não for um objeto (um tipo primitivo), isso vai causar um erro do tipo TypeError. No ES2015, um argumento que não é um objeto será tratado como um objeto não extensível, simplesmente retornando false.

Object.isExtensible(1);
// TypeError: 1 is not an object (ES5 code)

Object.isExtensible(1);
// false                         (ES2015 code)

Especificações

Especificações Status Comentário
ECMAScript 5.1 (ECMA-262)
The definition of 'Object.isExtensible' in that specification.
Padrão Initial definition. Implemented in JavaScript 1.8.5.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Object.isExtensible' in that specification.
Padrão
ECMAScript Latest Draft (ECMA-262)
The definition of 'Object.isExtensible' in that specification.
Rascunho

Compatibilidade de navegadores

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 YesFirefox 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

See also