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__ This deprecated API should no longer be used, but will probably still work. ) 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 (ECMA-262)
The definition of 'Object.isExtensible' in that specification.
Padrão em tempo real

Compatibilidade de navegadores

BCD tables only load in the browser

See also