aboutsummaryrefslogtreecommitdiff
path: root/files/uk/web/javascript/reference/global_objects/object/isfrozen/index.html
blob: b693befb9a6ae50c60bad3f1253bae9a6edc0675 (plain)
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
---
title: Object.isFrozen()
slug: Web/JavaScript/Reference/Global_Objects/Object/isFrozen
tags:
  - ECMAScript 5
  - JavaScript
  - Об'єкт
  - метод
  - розширюваний
translation_of: Web/JavaScript/Reference/Global_Objects/Object/isFrozen
---
<div>{{JSRef}}</div>

<p>Метод <code><strong>Object.isFrozen()</strong></code> визначає, чи є об'єкт {{jsxref("Object.freeze()", "замороженим", "", 1)}}.</p>

<div>{{EmbedInteractiveExample("pages/js/object-isfrozen.html")}}</div>



<h2 id="Синтаксис">Синтаксис</h2>

<pre class="syntaxbox"><code>Object.isFrozen(<var>obj</var>)</code></pre>

<h3 id="Параметри">Параметри</h3>

<dl>
 <dt><code>obj</code></dt>
 <dd>Об'єкт для перевірки.</dd>
</dl>

<h3 id="Повертає">Повертає</h3>

<p>{{jsxref("Boolean", "Булеве значення")}}, що вказує, чи є наданий об'єкт замороженим.</p>

<h2 id="Опис">Опис</h2>

<p>Об'єкт є замороженим тільки тоді, коли він не є {{jsxref("Object.isExtensible()", "розширюваним", "", 1)}}, всі його властивості недоступні для налаштування, і всі його властивості-значення (тобто, властивості, які не є властивостями-аксесорами, що мають гетер або сетер) недоступні для запису.</p>

<h2 id="Приклади">Приклади</h2>

<pre class="brush: js">// Новий об'єкт є розширюваним, отже, він не заморожений
Object.isFrozen({}); // === false

// Пустий об'єкт, котрий є нерозширюваним,
// є порожньо замороженим.
var vacuouslyFrozen = Object.preventExtensions({});
Object.isFrozen(vacuouslyFrozen); // === true

// Новий об'єкт з однією властивістю є також розширюваним,
// отже, не заморожений.
var oneProp = { p: 42 };
Object.isFrozen(oneProp); // === false

// Припинення розширювання об'єкту не робить його замороженим,
// тому що властивість досі доступна
// для налаштування (та запису).
Object.preventExtensions(oneProp);
Object.isFrozen(oneProp); // === false

// ...але видалення цієї властивості робить об'єкт
// порожньо замороженим.
delete oneProp.p;
Object.isFrozen(oneProp); // === true

// Нерозширюваний об'єкт з властивістю, недоступною для запису,
// але доступною для налаштування, не є замороженим.
var nonWritable = { e: 'plep' };
Object.preventExtensions(nonWritable);
Object.defineProperty(nonWritable, 'e', {
  writable: false
}); // зробити властивість недоступною для запису
Object.isFrozen(nonWritable); // === false

// Якщо зробити цю властивість недоступною для налаштування,
// тоді об'єкт буде замороженим.
Object.defineProperty(nonWritable, 'e', {
  configurable: false
}); // зробити властивість недоступною для налаштування
Object.isFrozen(nonWritable); // === true

// Нерозширюваний об'єкт з властивістю, недоступною
// для налаштування, але доступною для запису, також не є замороженим.
var nonConfigurable = { release: 'the kraken!' };
Object.preventExtensions(nonConfigurable);
Object.defineProperty(nonConfigurable, 'release', {
  configurable: false
});
Object.isFrozen(nonConfigurable); // === false

// Якщо зробити цю властивість недоступною для запису,
// тоді об'єкт буде заморожений.
Object.defineProperty(nonConfigurable, 'release', {
  writable: false
});
Object.isFrozen(nonConfigurable); // === true

// Нерозширюваний об'єкт з властивістю-аксесором,
// доступною для налаштування, не є замороженим.
var accessor = { get food() { return 'ням'; } };
Object.preventExtensions(accessor);
Object.isFrozen(accessor); // === false

// ...але якщо зробити цю властивість недоступною для налаштування,
// тоді об'єкт буде замороженим.
Object.defineProperty(accessor, 'food', {
  configurable: false
});
Object.isFrozen(accessor); // === true

// Але найпростіший спосіб зробити об'єкт замороженим -
// це викликати на ньому метод Object.freeze.
var frozen = { 1: 81 };
Object.isFrozen(frozen); // === false
Object.freeze(frozen);
Object.isFrozen(frozen); // === true

// За визначенням, заморожений об'єкт є нерозширюваним.
Object.isExtensible(frozen); // === false

// Також, за визначенням, заморожений об'єкт є запечатаним.
Object.isSealed(frozen); // === true
</pre>

<h2 id="Примітки">Примітки</h2>

<p>У ES5, якщо аргументом цього методу є не об'єкт (примітив), це спричинить {{jsxref("TypeError")}}. У ES2015 аргумент, що не є об'єктом, сприйматиметься як звичайний заморожений об'єкт, метод просто поверне <code>true</code>.</p>

<pre class="brush: js">Object.isFrozen(1);
// TypeError: 1 is not an object (код ES5)

Object.isFrozen(1);
// true                          (код ES2015)
</pre>

<h2 id="Специфікації">Специфікації</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Специфікація</th>
   <th scope="col">Статус</th>
   <th scope="col">Коментар</th>
  </tr>
  <tr>
   <td>{{SpecName('ES5.1', '#sec-15.2.3.12', 'Object.isFrozen')}}</td>
   <td>{{Spec2('ES5.1')}}</td>
   <td>Початкове визначення. Реалізоване у 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="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2>

<div>


<p>{{Compat("javascript.builtins.Object.isFrozen")}}</p>
</div>

<h2 id="Дивіться_також">Дивіться також</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>