diff options
Diffstat (limited to 'files/pt-br/web/javascript/reference/global_objects/object/isfrozen/index.html')
| -rw-r--r-- | files/pt-br/web/javascript/reference/global_objects/object/isfrozen/index.html | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/files/pt-br/web/javascript/reference/global_objects/object/isfrozen/index.html b/files/pt-br/web/javascript/reference/global_objects/object/isfrozen/index.html new file mode 100644 index 0000000000..1cab1b4843 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/isfrozen/index.html @@ -0,0 +1,172 @@ +--- +title: Object.isFrozen() +slug: Web/JavaScript/Reference/Global_Objects/Object/isFrozen +translation_of: Web/JavaScript/Reference/Global_Objects/Object/isFrozen +--- +<div>{{JSRef}}</div> + +<p>O método <code><strong>Object.isFrozen()</strong></code> determina se um objeto está {{jsxref("Object.freeze()", "frozen", "", 1)}}.</p> + +<div>{{EmbedInteractiveExample("pages/js/object-isfrozen.html")}}</div> + + + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox"><code>Object.isFrozen(<var>obj</var>)</code></pre> + +<h3 id="Parameters">Parameters</h3> + +<dl> + <dt><code>obj</code></dt> + <dd>O objeto que será verificado.</dd> +</dl> + +<h3 id="Return_value">Return value</h3> + +<p>Um valor {{jsxref("Boolean")}} indicando se o objeto está frozen.</p> + +<h2 id="Descrição">Descrição</h2> + +<p>Um objeto estará frozen se, e apenas se, ele não for {{jsxref("Object.isExtensible()", "extensible", "", 1)}}, todas as suas propriedades não são configuráveis e todas suas propriedades de dados (propriedades que não são asessores de propriedades com getters ou setters) não podem ser modificadas.</p> + +<h2 id="Examples">Examples</h2> + +<pre class="brush: js">// Um novo objeto é extensível, então ele não está frozen. +Object.isFrozen({}); // === false + +// Um objeto vazio que não é extensível +// é vagamente frozen. +var vacuouslyFrozen = Object.preventExtensions({}); +Object.isFrozen(vacuouslyFrozen); // === true + +// Um novo objeto com uma propriedade também é extensível, +// portanto não está frozen. +var oneProp = { p: 42 }; +Object.isFrozen(oneProp); // === false + +// Impedir extensões do objeto ainda +// não o torna frozen, pois a propriedade ainda será +// configurável (e modificável). +Object.preventExtensions(oneProp); +Object.isFrozen(oneProp); // === false + +// ...Porém, deletando a propriedade o objeto se tornará +// vagamente frozen. +delete oneProp.p; +Object.isFrozen(oneProp); // === true + +// Um objeto não extensível e não modificável, +// mas com uma propriedade configurável não será frozen. +var nonWritable = { e: 'plep' }; +Object.preventExtensions(nonWritable); +Object.defineProperty(nonWritable, 'e', { + writable: false +}); // tornar não modificável +Object.isFrozen(nonWritable); // === false + +// Alterando a propriedade para não configurável +// tornará o objeto frozen. +Object.defineProperty(nonWritable, 'e', { + configurable: false +}); // make non-configurable +Object.isFrozen(nonWritable); // === true + +// Um objeto não extensível com uma propriedade não configurável +// mas modificável não será frozen. +var nonConfigurable = { release: 'the kraken!' }; +Object.preventExtensions(nonConfigurable); +Object.defineProperty(nonConfigurable, 'release', { + configurable: false +}); +Object.isFrozen(nonConfigurable); // === false + +// Alterando a propriedade para não modificável +// tornará o objeto frozen. +Object.defineProperty(nonConfigurable, 'release', { + writable: false +}); +Object.isFrozen(nonConfigurable); // === true + +// Um objeto não extensível com um assessor de propriedade +// configurável não será frozen. +var accessor = { get food() { return 'yum'; } }; +Object.preventExtensions(accessor); +Object.isFrozen(accessor); // === false + +// ...Mas alterando essa propriedade para não configurável +// o objeto se tornará frozen. +Object.defineProperty(accessor, 'food', { + configurable: false +}); +Object.isFrozen(accessor); // === true + +// A forma mais fácil para um objeto ser frozen +// é se o método Object.freeze foi usado nele. +var frozen = { 1: 81 }; +Object.isFrozen(frozen); // === false +Object.freeze(frozen); +Object.isFrozen(frozen); // === true + +// Por definição, um objeto frozen não é extensível. +Object.isExtensible(frozen); // === false + +// Também por definição, um objeto frozen estará sealed. +Object.isSealed(frozen); // === true +</pre> + +<h2 id="Notas">Notas</h2> + +<p>No ES5, se o argumento deste método não for um objeot (uma primitiva), ele irá lançar um {{jsxref("TypeError")}}. No ES2015, um argumento que não é objeto será sempre tratado como se fosse um objeto frozen, simplesmente retornando <code>true</code>.</p> + +<pre class="brush: js">Object.isFrozen(1); +// TypeError: 1 is not an object (ES5 code) + +Object.isFrozen(1); +// true (ES2015 code) +</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.3.12', 'Object.isFrozen')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Initial definition. Implemented in JavaScript 1.8.5.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.isfrozen', 'Object.isFrozen')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-object.isfrozen', 'Object.isFrozen')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegadores">Compatibilidade de navegadores</h2> + +<div> + + +<p>{{Compat("javascript.builtins.Object.isFrozen")}}</p> +</div> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{jsxref("Object.freeze()")}}</li> + <li>{{jsxref("Object.preventExtensions()")}}</li> + <li>{{jsxref("Object.isExtensible()")}}</li> + <li>{{jsxref("Object.seal()")}}</li> + <li>{{jsxref("Object.isSealed()")}}</li> +</ul> |
