--- title: Object.isSealed() slug: Web/JavaScript/Reference/Global_Objects/Object/isSealed translation_of: Web/JavaScript/Reference/Global_Objects/Object/isSealed ---
O método Object.isSealed()
determina se um objeto está selado.
O código-fonte deste exemplo interativo está armazenado em um repositório do GitHub. Se deseja contribuir com o projeto de exemplos interativos, por favor clone https://github.com/mdn/interactive-examples e envie-nos uma pull request.
Object.isSealed(obj)
obj
Um {{jsxref("Boolean")}} indicando se o objeto fornecido está ou não selado.
Retorna true
se o objeto está selado, senão false
. Um objeto está selado se ele for "não {{jsxref("Object.isExtensible", "extensible", "", 1)}}" 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").
// 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)
No ES5, se o argumento para esse método não é um objeto (um primitivo), então ele irá causar um {{jsxref("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ção | Estado | Comentário |
---|---|---|
{{SpecName('ES5.1', '#sec-15.2.3.11', 'Object.isSealed')}} | {{Spec2('ES5.1')}} | Definição inicial. Implementado no JavaScript 1.8.5. |
{{SpecName('ES6', '#sec-object.issealed', 'Object.isSealed')}} | {{Spec2('ES6')}} | |
{{SpecName('ESDraft', '#sec-object.issealed', 'Object.isSealed')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.builtins.Object.isSealed")}}