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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
|
---
title: Object.isFrozen()
slug: Web/JavaScript/Reference/Global_Objects/Object/isFrozen
tags:
- ECMAScript 5
- Function
- Italian
- Italiano
- JavaScript
- JavaScript 1.8.5
- Method
- Object
- Oggetto
- funzione
- metodo
translation_of: Web/JavaScript/Reference/Global_Objects/Object/isFrozen
---
<div>{{JSRef}}</div>
<p>Il metodo <code><strong>Object.isFrozen()</strong></code> determina se un oggetto è {{jsxref("Object.freeze()", "congelato", "", 1)}}.</p>
<div>{{EmbedInteractiveExample("pages/js/object-isfrozen.html")}}</div>
<p class="hidden">Il codice sorgente per questo esempio interattivo si trova in una repository di GitHub. Se vuoi contribuire al progetto degli esempi interattivi, puoi clonare <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> ed inviarci una pull request.</p>
<h2 id="Syntax">Syntax</h2>
<pre class="syntaxbox"><code>Object.isFrozen(<var>obj</var>)</code></pre>
<h3 id="Parametri">Parametri</h3>
<dl>
<dt><code>obj</code></dt>
<dd>L'oggetto da controllare.</dd>
</dl>
<h3 id="Valori_di_ritorno">Valori di ritorno</h3>
<p>Un {{jsxref("Boolean")}} che indica se l'oggetto è congelato oppure no.</p>
<h2 id="Description">Description</h2>
<p>Un oggetto è congelato solo e soltanto se non è {{jsxref("Object.isExtensible()", "estensibile", "", 1)}}, tutte le sue proprietà sono non-configurabili, e tutte le sue proprietà "data" (che non sono proprietà "accessor", quindi non hanno componenti getter o setters) non sono sovrascrivibili.</p>
<h2 id="Esempi">Esempi</h2>
<pre class="brush: js">// Un nuovo oggetto è estensibile, quindi non è congelato.
Object.isFrozen({}); // === false
// Un oggetto vuoto che non è estensibile
// è vacuamente congelato.
var vacuouslyFrozen = Object.preventExtensions({});
Object.isFrozen(vacuouslyFrozen); // === true
// Un nuovo oggetto con una sola proprietà è estensibile,
// quindi non è congelato.
var oneProp = { p: 42 };
Object.isFrozen(oneProp); // === false
// Prevenire le estensioni dell'oggetto, comunque non
// lo rende congelato, perché la proprietà è comunque
// configurabile(e sovrascrivibile).
Object.preventExtensions(oneProp);
Object.isFrozen(oneProp); // === false
// ...ma poi cancellare quella proprietà, rende l'oggetto
// vacuamente congelato.
delete oneProp.p;
Object.isFrozen(oneProp); // === true
// Un oggetto non-estensibile con una proprietà non-sovrascrivibile,
// ma comunque configurabile, non è congelato.
var nonWritable = { e: 'plep' };
Object.preventExtensions(nonWritable);
Object.defineProperty(nonWritable, 'e', {
writable: false
}); // rende non-sovrascrivibile
Object.isFrozen(nonWritable); // === false
// Cambiare quella proprietà in non-configurabile
// rende l'oggetto congelato.
Object.defineProperty(nonWritable, 'e', {
configurable: false
}); // rende non-configurabile
Object.isFrozen(nonWritable); // === true
// Un oggetto non-estensibile con una proprietà non-configurabile
// ma comunque sovrascribile, non è congelato.
var nonConfigurable = { release: 'the kraken!' };
Object.preventExtensions(nonConfigurable);
Object.defineProperty(nonConfigurable, 'release', {
configurable: false
});
Object.isFrozen(nonConfigurable); // === false
// Cambiare quella proprietà in non-sovrascribile,
// allora rende l'oggetto congelato.
Object.defineProperty(nonConfigurable, 'release', {
writable: false
});
Object.isFrozen(nonConfigurable); // === true
// Un oggetto non-estensibile con una configurabile
// proprietà "accessor", non è congelato.
var accessor = { get food() { return 'yum'; } };
Object.preventExtensions(accessor);
Object.isFrozen(accessor); // === false
// ...ma poi rendere quella proprietà non-configurabile
// congela l'oggetto.
Object.defineProperty(accessor, 'food', {
configurable: false
});
Object.isFrozen(accessor); // === true
// Ma il metodo più veloce per congelare un oggetto,
// è utilizzare il metodo Object.freeze su di esso.
var frozen = { 1: 81 };
Object.isFrozen(frozen); // === false
Object.freeze(frozen);
Object.isFrozen(frozen); // === true
// Per definizione, un oggetto congelato non è estensibile.
Object.isExtensible(frozen); // === false
// E sempre per definizione, un oggetto congelato è anche sigillato.
Object.isSealed(frozen); // === true
</pre>
<h2 id="Note">Note</h2>
<p>In ES5, se l'argomento di questo metodo non è un'oggetto, allora verrà generato un {{jsxref("TypeError")}}. In ES2015, un argomento che non è un oggetto verrà trattato come se fosse un normale oggetto già congelato, e perciò verrà semplicemente ritornato <code>true</code>.</p>
<pre class="brush: js">Object.isFrozen(1);
// TypeError: 1 non è un oggetto (codice in ES5)
Object.isFrozen(1);
// true (codice in ES2015)
</pre>
<h2 id="Specifiche">Specifiche</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>Definizione iniziale. Implementato 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="Compatibilità_con_i_browser">Compatibilità con i browser</h2>
<div>
<div class="hidden">La compatibility table su questa pagina è generata da dati strutturali. Se vuoi contribuire per i dati, puoi visitare <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> ed inviarci una pull request.</div>
<p>{{Compat("javascript.builtins.Object.isFrozen")}}</p>
</div>
<h2 id="Vedi_anche">Vedi anche</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>
|