1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
---
title: Object.isSealed()
slug: Web/JavaScript/Reference/Global_Objects/Object/isSealed
translation_of: Web/JavaScript/Reference/Global_Objects/Object/isSealed
---
<div>{{JSRef}}</div>
<p>O método <code><strong>Object.isSealed()</strong></code> determina se um objeto está selado.</p>
<div>{{EmbedInteractiveExample("pages/js/object-issealed.html")}}</div>
<p class="hidden">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 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> e envie-nos uma <em>pull request</em>.</p>
<h2 id="Sintaxe">Sintaxe</h2>
<pre class="syntaxbox"><code>Object.isSealed(<var>obj</var>)</code></pre>
<h3 id="Parâmetros">Parâmetros</h3>
<dl>
<dt><code>obj</code></dt>
<dd>O objeto que deverá ser verificado.</dd>
</dl>
<h3 id="Valor_retornado">Valor retornado</h3>
<p>Um {{jsxref("Boolean")}} indicando se o objeto fornecido está ou não selado.</p>
<h2 id="Descrição">Descrição</h2>
<p>Retorna <code>true</code> se o objeto está selado, senão <code>false</code>. 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").</p>
<h2 id="Exemplos">Exemplos</h2>
<pre class="brush: js">// 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)
</pre>
<h2 id="Notas">Notas</h2>
<p>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 <code>true</code>.</p>
<pre class="brush: js">Object.isSealed(1);
// TypeError: 1 is not an object (ES5 code)
Object.isSealed(1);
// true (ES2015 code)
</pre>
<h2 id="Especificações">Especificações</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Especificação</th>
<th scope="col">Estado</th>
<th scope="col">Comentário</th>
</tr>
<tr>
<td>{{SpecName('ES5.1', '#sec-15.2.3.11', 'Object.isSealed')}}</td>
<td>{{Spec2('ES5.1')}}</td>
<td>Definição inicial. Implementado no JavaScript 1.8.5.</td>
</tr>
<tr>
<td>{{SpecName('ES6', '#sec-object.issealed', 'Object.isSealed')}}</td>
<td>{{Spec2('ES6')}}</td>
<td> </td>
</tr>
<tr>
<td>{{SpecName('ESDraft', '#sec-object.issealed', 'Object.isSealed')}}</td>
<td>{{Spec2('ESDraft')}}</td>
<td> </td>
</tr>
</tbody>
</table>
<h2 id="Compatibilidade_com_Navegadores">Compatibilidade com Navegadores</h2>
<div>
<div class="hidden">A tabela de compatibilidade nesta página é gerado a partir de dados estruturados. Se deseja contribuir com os dados, por favor clone o repositório <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e envie-nos um <em>pull request</em>.</div>
<p>{{Compat("javascript.builtins.Object.isSealed")}}</p>
</div>
<h2 id="Veja_também">Veja também</h2>
<ul>
<li>{{jsxref("Object.seal()")}}</li>
<li>{{jsxref("Object.preventExtensions()")}}</li>
<li>{{jsxref("Object.isExtensible()")}}</li>
<li>{{jsxref("Object.freeze()")}}</li>
<li>{{jsxref("Object.isFrozen()")}}</li>
</ul>
|