Object.isExtensible()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

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

Experimente

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 Object.prototype.__proto__ Deprecated ) 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

js
// 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.

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

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

Especificações

Specification
ECMAScript Language Specification
# sec-object.isextensible

Compatibilidade com navegadores

BCD tables only load in the browser

See also