diff options
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/object/seal/index.html')
-rw-r--r-- | files/uk/web/javascript/reference/global_objects/object/seal/index.html | 151 |
1 files changed, 0 insertions, 151 deletions
diff --git a/files/uk/web/javascript/reference/global_objects/object/seal/index.html b/files/uk/web/javascript/reference/global_objects/object/seal/index.html deleted file mode 100644 index 568686ede7..0000000000 --- a/files/uk/web/javascript/reference/global_objects/object/seal/index.html +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: Object.seal() -slug: Web/JavaScript/Reference/Global_Objects/Object/seal -tags: - - ECMAScript5 - - JavaScript - - Об'єкт - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Object/seal ---- -<div>{{JSRef}}</div> - -<p>Метод <code><strong>Object.seal()</strong></code> запечатує об'єкт, запобігаючи створенню нових властивостей та відмічаючи усі існуючі властивості як недоступні для налаштування. Значення існуючих властивостей можна і надалі змінювати, якщо вони доступні для запису.</p> - -<div>{{EmbedInteractiveExample("pages/js/object-prototype-seal.html")}}</div> - - - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox">Object.seal(<var>obj</var>)</pre> - -<h3 id="Параметри">Параметри</h3> - -<dl> - <dt><code><var>obj</var></code></dt> - <dd>Об'єкт, який має бути запечатаний.</dd> -</dl> - -<h3 id="Повертає">Повертає</h3> - -<p>Об'єкт, який запечатується.</p> - -<h2 id="Опис">Опис</h2> - -<p>За замовчуванням, об'єкти є {{jsxref("Object.isExtensible()", "розширюваними", "", 1)}} (до них можна додати нові властивості). Запечатування об'єкту запобігає створенню нових властивостей і робить усі існуючі властивосні недоступними для налаштування. Це робить набір властивостей об'єкта зафіксованим і незмінним. Перетворення всіх властивостей на недоступні для налаштування також запобігає зміні властивостей-значень на властивості-аксесори, та навпаки, але не запобігає зміні значеннь властивостей. Спроби додати чи видалити властивість з запечатаного об'єкта, або перетворити властивість-значення на властивість-аксесор, не спрацюють, або непомітно, або з викиданням {{jsxref("TypeError")}} (найчастіше, але не виключно, у {{jsxref("Strict_mode", "строгому режимі", "", 1)}})</p> - -<p>Ланцюг прототипів залишається незмінним. Проте, властивість {{jsxref("Object.proto", "__proto__")}} {{deprecated_inline}} також запечатується.</p> - -<h2 id="Приклади">Приклади</h2> - -<pre class="brush: js">var obj = { - prop: function() {}, - foo: 'му' -}; - -// Нові властивості можуть бути додані, існуючі властивості -// можуть бути змінені або видалені. -obj.foo = 'мяв'; -obj.lumpy = 'ква'; -delete obj.prop; - -var o = Object.seal(obj); - -o === obj; // true -Object.isSealed(obj); // === true - -// На запечатаному об'єкті можна змінювати значення властивостей -obj.foo = 'кря'; - -// Але не можна перетворити властивості-значення на властивості-аксесори, -// і навпаки. -Object.defineProperty(obj, 'foo', { - get: function() { return 'g'; } -}); // викидає TypeError - -// Тепер будь-які спроби змін в об'єкті, окрім змін властивостей, -// не працюватимуть. -obj.quaxxor = 'весела качка'; -// непомітно не додасть властивість -delete obj.foo; -// непомітно не видалить властивість - -// ...а у строгому режимі такі спроби -// викидатимуть помилки TypeError. -function fail() { - 'use strict'; - delete obj.foo; // викидає TypeError - obj.sparky = 'гав'; // викидає TypeError -} -fail(); - -// Спроби додавання властивостей за допомогою -// Object.defineProperty також викидатимуть помилки. -Object.defineProperty(obj, 'ohai', { - value: 17 -}); // викидає TypeError -Object.defineProperty(obj, 'foo', { - value: 'рох' -}); // змінює значення існуючої властивості -</pre> - -<h2 id="Примітки">Примітки</h2> - -<p>У ES5, якщо аргументом цього методу є не об'єкт (примітив), це спричинить {{jsxref("TypeError")}}. У ES2015 аргумент, що не є об'єктом, сприйматиметься як звичайний запечатаний об'єкт, і буде просто повернений.</p> - -<pre class="brush: js">Object.seal(1); -// TypeError: 1 is not an object (код ES5) - -Object.seal(1); -// 1 (код ES2015) -</pre> - -<h3 id="Порівняння_з_Object.freeze">Порівняння з <code>Object.freeze()</code></h3> - -<p>Існуючі властивості об'єктів, заморожених методом {{jsxref("Object.freeze()")}}, стають незмінними. Властивості об'єкта, запечатаного методом <code>Object.seal()</code>, надалі можуть бути зміненні.</p> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Специфікації</th> - <th scope="col">Статус</th> - <th scope="col">Коментар</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.2.3.8', 'Object.seal')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td>Початкове визначення. Реалізоване у JavaScript 1.8.5.</td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-object.seal', 'Object.seal')}}</td> - <td>{{Spec2('ES6')}}</td> - <td></td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-object.seal', 'Object.seal')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td></td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Object.seal")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Object.isSealed()")}}</li> - <li>{{jsxref("Object.preventExtensions()")}}</li> - <li>{{jsxref("Object.isExtensible()")}}</li> - <li>{{jsxref("Object.freeze()")}}</li> - <li>{{jsxref("Object.isFrozen()")}}</li> -</ul> |