Object.isSealed()
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.isSealed()
determina se um objeto está selado.
Experimente
Sintaxe
Object.isSealed(obj)
Parâmetros
obj
-
O objeto que deverá ser verificado.
Valor retornado
Um Boolean
indicando se o objeto fornecido está ou não selado.
Descrição
Retorna true
se o objeto está selado, senão false
. Um objeto está selado se ele for "não extensible" e se todas as suas propriedades estão como "não configuráveis" e assim sendo "não removíveis" (mas não necessariamente "não escrevíveis").
Exemplos
// Objetos não são selados por padrão.
var empty = {};
Object.isSealed(empty); // === false
// Se você fizer um objeto não extensível vazio,
// ele estará vagamente selado.
Object.preventExtensions(empty);
Object.isSealed(empty); // === true
// O mesmo não é verdadeiro em um objeto "não vazio",
// a não ser que todas as suas propriedades sejam "não configuráveis".
var hasProp = { fee: "fie foe fum" };
Object.preventExtensions(hasProp);
Object.isSealed(hasProp); // === false
// Mas torne-os todos "não configuráveis"
// e o objeto se tornará selado.
Object.defineProperty(hasProp, "fee", {
configurable: false,
});
Object.isSealed(hasProp); // === true
// O jeito mais fácil de selar um objeto, com certeza,
// é Object.seal.
var sealed = {};
Object.seal(sealed);
Object.isSealed(sealed); // === true
// Um objeto selado é, por definição, não extensível.
Object.isExtensible(sealed); // === false
// Um objeto selado pode estar congelado,
// mas não precisa estar.
Object.isFrozen(sealed); // === true
// (todas as propriedades também não escrevíveis)
var s2 = Object.seal({ p: 3 });
Object.isFrozen(s2); // === false
// ('p' continua "escrevível")
var s3 = Object.seal({
get p() {
return 0;
},
});
Object.isFrozen(s3); // === true
// (somente a configurabilidade importa nos assessores de propriedade)
Notas
No ES5, se o argumento para esse método não é um objeto (um primitivo), então ele irá causar um TypeError
. No ES2015, um argumento que não seja objeto irá ser tratado como se fosse um objeto selado qualquer, simplesmente retornando true
.
Object.isSealed(1);
// TypeError: 1 is not an object (ES5 code)
Object.isSealed(1);
// true (ES2015 code)
Especificações
Specification |
---|
ECMAScript Language Specification # sec-object.issealed |
Compatibilidade com navegadores
BCD tables only load in the browser