diff options
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/symbol')
22 files changed, 0 insertions, 2121 deletions
diff --git a/files/uk/web/javascript/reference/global_objects/symbol/@@toprimitive/index.html b/files/uk/web/javascript/reference/global_objects/symbol/@@toprimitive/index.html deleted file mode 100644 index d4819f362a..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/@@toprimitive/index.html +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: 'Symbol.prototype[@@toPrimitive]' -slug: Web/JavaScript/Reference/Global_Objects/Symbol/@@toPrimitive -tags: - - ECMAScript 2015 - - JavaScript - - Symbol - - Символ - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/@@toPrimitive ---- -<div>{{JSRef}}</div> - -<p>Метод <strong><code>[@@toPrimitive]()</code></strong> перетворює об'єкт Symbol на примітивне значення.</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox notranslate">Symbol()[Symbol.toPrimitive](<var>hint</var>) -</pre> - -<h3 id="Повертає">Повертає</h3> - -<p>Примітивне значення вказаного об'єкта {{jsxref("Symbol")}}.</p> - -<h2 id="Опис">Опис</h2> - -<p>Метод <code>[@@toPrimitive]()</code> об'єкта {{jsxref("Symbol")}} повертає примітивне значення об'єкта Symbol у вигляді символьного типу даних. Аргумент <code><var>hint</var></code> не використовується.</p> - -<p>JavaScript викликає метод <code>[@@toPrimitive]()</code> для перетворення об'єкта на примітивне значення. Вам рідко знадобиться запускати метод <code>[@@toPrimitive]()</code> власноруч; JavaScript автоматично запускає його, зустрівши об'єкт там, де очікується примітивне значення.</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Використання_toPrimitive">Використання @@toPrimitive</h3> - -<pre class="brush: js notranslate">const sym = Symbol("example"); -sym === sym[Symbol.toPrimitive](); // true -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Специфікація</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol.prototype-@@toprimitive', 'Symbol.prototype.@@toPrimitive')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Symbol.@@toPrimitive")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Symbol.toPrimitive")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/asynciterator/index.html b/files/uk/web/javascript/reference/global_objects/symbol/asynciterator/index.html deleted file mode 100644 index 69b6b4c5d1..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/asynciterator/index.html +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Symbol.asyncIterator -slug: Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator -tags: - - ECMAScript 2018 - - JavaScript - - Symbol - - Властивість - - Довідка - - Символ - - асинхронний -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator ---- -<div>{{JSRef}}</div> - -<p>Добревідомий символ <code><strong>Symbol.asyncIterator</strong></code> вказує для об'єкта AsyncIterator за замовчуванням. Якщо ця властивість присутня в об'єкті, то він є асинхронним ітерабельним об'єктом і може використовуватись у циклі <code><a href="/uk/docs/Web/JavaScript/Reference/Statements/for-await...of">for await...of</a></code>.</p> - - - -<h2 id="Опис">Опис</h2> - -<p>Символ <code>Symbol.asyncIterator</code> є вбудованим символом, який використовується для доступу до метода <code>@@asyncIterator</code> у об'єкта. Для того, щоб об'єкт був асинхронним ітерабельним об'єктом, він повинен мати ключ <code>Symbol.asyncIterator</code>.</p> - -<p>{{js_property_attributes(0,0,0)}}</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Асинхронні_ітерабельні_обєкти_створені_користувачем">Асинхронні ітерабельні об'єкти, створені користувачем</h3> - -<p>Ви можете визначити власний асинхронний ітерабельний об'єкт, встановивши на об'єкті властивість <code>[Symbol.asyncIterator]</code>. </p> - -<pre class="brush: js notranslate">const myAsyncIterable = new Object(); -myAsyncIterable[Symbol.asyncIterator] = async function*() { - yield "привіт"; - yield "асинхронний"; - yield "перебір!"; -}; - -(async () => { - for await (const x of myAsyncIterable) { - console.log(x); - // очікуваний результат: - // "привіт" - // "асинхронний" - // "перебір!" - } -})(); -</pre> - -<p>Створюючи API, пам'ятайте, що асинхронні ітерабельні об'єкти створені для того, щоб відображати щось <em>ітерабельне</em>, наприклад, потік даних чи список, а не для того, щоб повністю замінити зворотні виклики та події у більшості ситуацій.</p> - -<h3 id="Вбудовані_асинхронні_ітерабельні_обєкти">Вбудовані асинхронні ітерабельні об'єкти</h3> - -<p>У JavaScript наразі не існує вбудованих об'єктів, що мають ключ <code>[Symbol.asyncIterator]</code> за замовчуванням. Однак, WHATWG Streams можуть стати першим вбудованим асинхронним ітерабельним об'єктом, з нещодавно доданим у специфікацію символом <code>[Symbol.asyncIterator]</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('ES2018', '#sec-symbol.asynciterator', 'Symbol.asyncIterator')}}</td> - <td>{{Spec2('ES2018')}}</td> - <td></td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{compat("javascript.builtins.Symbol.asyncIterator")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li><a href="/uk/docs/Web/JavaScript/Reference/Протоколи_перебору">Протоколи перебору</a></li> - <li><a href="/uk/docs/Web/JavaScript/Reference/Statements/for-await...of">for await... of</a></li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/description/index.html b/files/uk/web/javascript/reference/global_objects/symbol/description/index.html deleted file mode 100644 index 039755bd5e..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/description/index.html +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Symbol.prototype.description -slug: Web/JavaScript/Reference/Global_Objects/Symbol/description -tags: - - JavaScript - - Symbol - - Властивість - - Символ - - прототип -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/description ---- -<div>{{JSRef}}</div> - -<p>Властивість лише для читання <code><strong>description</strong></code> - це рядок, що повертає необов'язковий опис об'єктів {{JSxRef("Symbol")}}.</p> - -<div>{{EmbedInteractiveExample("pages/js/symbol-prototype-description.html")}}</div> - - - -<h2 id="Опис">Опис</h2> - -<p>{{JSxRef("Symbol","Символьні")}} об'єкти можуть бути створені з необов'язковим описом, який можна використовувати для відлагодження, але не для доступу до самого символа. Властивість <code>Symbol.prototype.description</code> можна використати, щоб прочитати цей опис. Вона відрізняється від <code>Symbol.prototype.toString()</code>, оскільки не містить рядка "<code>Symbol()</code>" навколо. Дивіться приклади.</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Використання_опису">Використання опису</h3> - -<pre class="brush: js notranslate">Symbol('desc').toString(); // "Symbol(desc)" -Symbol('desc').description; // "desc" -Symbol('').description; // "" -Symbol().description; // undefined - -// добревідомі символи -Symbol.iterator.toString(); // "Symbol(Symbol.iterator)" -Symbol.iterator.description; // "Symbol.iterator" - -// глобальні символи -Symbol.for('foo').toString(); // "Symbol(foo)" -Symbol.for('foo').description; // "foo" - -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Специфікація</th> - </tr> - <tr> - <td>{{SpecName("ESDraft", "#sec-symbol.prototype.description", "get Symbol.prototype.description")}}</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Symbol.description")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{JSxRef("Symbol.prototype.toString()")}}</li> - <li>Поліфіл: <a href="https://npmjs.com/symbol.prototype.description">https://npmjs.com/symbol.prototype.description</a></li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/for/index.html b/files/uk/web/javascript/reference/global_objects/symbol/for/index.html deleted file mode 100644 index e8680798a9..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/for/index.html +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: Symbol.for() -slug: Web/JavaScript/Reference/Global_Objects/Symbol/for -tags: - - ECMAScript 2015 - - JavaScript - - Symbol - - Символ - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/for ---- -<div>{{JSRef}}</div> - -<p>Метод <strong><code>Symbol.for(key)</code></strong> шукає існуючі символи у загальному реєстрі символів за заданим ключем, та повертає, якщо знаходить. Інакше, у глобальному реєстрі символів створюється новий символ з цим ключем.</p> - -<div>{{EmbedInteractiveExample("pages/js/symbol-for.html")}}</div> - -<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</div> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox notranslate">Symbol.for(<var>key</var>);</pre> - -<h3 id="Параметри">Параметри</h3> - -<dl> - <dt><code><var>key</var></code></dt> - <dd>Рядок, обов'язковий. Ключ для символа (а також використовується для опису символа).</dd> -</dl> - -<h3 id="Повертає">Повертає</h3> - -<p>Існуючий символ з наданим ключем, якщо його знайдено; інакше, створюється та повертається новий символ.</p> - -<h2 id="Опис">Опис</h2> - -<p>На відміну від <code>Symbol()</code>, функція <code>Symbol.for()</code> створює символ, доступний у списку глобального реєстру символів. <code>Symbol.for()</code> також не обов'язково створює новий символ при кожному виклику, а спочатку перевіряє, чи існує вже символ з наданим ключем <code>key</code> у реєстрі. В такому випадку повертається цей символ. Якщо символ з наданим ключем не знайдений, <code>Symbol.for()</code> створить новий глобальний символ.</p> - -<h3 id="Глобальний_реєстр_символів">Глобальний реєстр символів</h3> - -<p>Глобальний реєстр символів - це список з наступною структурою запису, який ініціалізується порожнім:</p> - -<table class="standard-table"> - <caption>Запис у глобальному реєстрі символів</caption> - <tbody> - <tr> - <th>Ім'я поля</th> - <th>Значення</th> - </tr> - <tr> - <td>[[key]]</td> - <td>Рядковий ключ для ідентифікації символа.</td> - </tr> - <tr> - <td>[[symbol]]</td> - <td>Символ, що зберігається глобально.</td> - </tr> - </tbody> -</table> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Використання_Symbol.for">Використання Symbol.for()</h3> - -<pre class="brush: js notranslate">Symbol.for('foo'); // створити новий глобальний символ -Symbol.for('foo'); // отримати вже створений символ - -// Один і той самий глобальний символ, але не локально -Symbol.for('bar') === Symbol.for('bar'); // true -Symbol('bar') === Symbol('bar'); // false - -// Ключ також використовується в якості опису -var sym = Symbol.for('mario'); -sym.toString(); // "Symbol(mario)" -</pre> - -<p>Щоб уникнути конфліктів між іменами ваших ключів глобальних символів та іншими (код бібліотеки) глобальними символами, може бути гарною ідеєю додавати до ваших символів префікс:</p> - -<pre class="brush: js notranslate">Symbol.for('mdn.foo'); -Symbol.for('mdn.bar'); -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Специфікація</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol.for', 'Symbol.for')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Symbol.for")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Symbol.keyFor()")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/hasinstance/index.html b/files/uk/web/javascript/reference/global_objects/symbol/hasinstance/index.html deleted file mode 100644 index 78a1246aa5..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/hasinstance/index.html +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Symbol.hasInstance -slug: Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance -tags: - - ECMAScript 2015 - - JavaScript - - Symbol - - Властивість - - Довідка - - Символ -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance ---- -<div>{{JSRef}}</div> - -<p><span class="seoSummary">Добревідомий символ <strong><code>Symbol.hasInstance</code></strong> використовують, щоб визначити, чи конструктор розпізнає об'єкт як свій екземпляр. Цим символом можна налаштовувати поведінку оператора {{jsxref("Operators/instanceof", "instanceof")}}.</span></p> - -<div>{{EmbedInteractiveExample("pages/js/symbol-hasinstance.html")}}</div> - -<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</div> - -<div>{{js_property_attributes(0,0,0)}}</div> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Змінена_поведінка_instanceof">Змінена поведінка instanceof</h3> - -<p>Ви можете реалізувати свою власну поведінку <code>instanceof</code>, наприклад, так:</p> - -<pre class="brush: js notranslate">class MyArray { - static [Symbol.hasInstance](instance) { - return Array.isArray(instance) - } -} -console.log([] instanceof MyArray); // true -</pre> - -<pre class="brush: js notranslate">function MyArray() { } -Object.defineProperty(MyArray, Symbol.hasInstance, { - value: function(instance) { return Array.isArray(instance); } -}); -console.log([] instanceof MyArray); // true</pre> - -<h3 id="Перевіряємо_екземпляр_обєкта">Перевіряємо екземпляр об'єкта</h3> - -<p>Таким самим чином, як ви перевіряєте, чи є об'єкт екземпляром класу, за допомогою ключового слова <code>instanceof</code>, можна використати <code>Symbol.hasInstance</code> для таких перевірок.</p> - -<pre class="brush: js notranslate">class Animal { - constructor() {} -} - -const cat = new Animal(); - -console.log(Animal[Symbol.hasInstance](cat)); // true -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Специфікація</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol.hasinstance', 'Symbol.hasInstance')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Symbol.hasInstance")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Operators/instanceof", "instanceof")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/index.html b/files/uk/web/javascript/reference/global_objects/symbol/index.html deleted file mode 100644 index eb4625fdb6..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/index.html +++ /dev/null @@ -1,466 +0,0 @@ ---- -title: Symbol -slug: Web/JavaScript/Reference/Global_Objects/Symbol -tags: - - ECMAScript 2015 - - JavaScript - - NeedsTranslation - - Symbol - - TopicStub -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol ---- -<div>{{JSRef}}</div> - -<p><strong>Символ</strong> є {{Glossary("Primitive", "простим типом даних")}}. Функція <code>Symbol()</code> вертає значення типу <strong>символ</strong>, має статичні властивості, що відкривають декілька членів вбудованих об'єктів, має статичні методи, що відкривають глобальний реєстр символів, та нагадує вбудований клас об'єкта, але не є повноцінним конструктором, оскільки не підтримує синтаксис "<code>new Symbol()</code>".</p> - -<p>Кожне символьне значення, що його вертає <code>Symbol()</code>, є унікальним. Символьне значення може використовуватись в якості ідентифікатора властивостей об'єкта; це єдина мета цього типу даних. Більше пояснень щодо мети та використання можна знайти у <a href="/uk/docs/Glossary/Символ">статті словника щодо символів</a>.</p> - -<p>{{EmbedInteractiveExample("pages/js/symbol-constructor.html")}}</p> - -<div class="hidden"> -<p>The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p> -</div> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox">Symbol(<em>[description]</em>)</pre> - -<h3 id="Параметри">Параметри</h3> - -<dl> - <dt><code>description</code> {{optional_inline}}</dt> - <dd>Необов'язковий, рядок. Опис символу, який можна використовувати для відлагодження, але не для доступу для самого символу.</dd> -</dl> - -<h2 id="Опис">Опис</h2> - -<p>Для створення примітивного символа ви пишете <code>Symbol()</code> з необов'язковим рядком в ролі його опису:</p> - -<pre class="brush: js">var sym1 = Symbol(); -var sym2 = Symbol('foo'); -var sym3 = Symbol('foo'); -</pre> - -<p>Наведений код створює три нові символи. Зауважте, що <code>Symbol("foo")</code> не приводить рядок "foo" до символу. Він кожен раз створює новий символ:</p> - -<pre class="brush: js">Symbol('foo') === Symbol('foo'); // false</pre> - -<p>Наступний синтаксис з оператором {{jsxref("Operators/new", "new")}} викине помилку {{jsxref("TypeError")}}:</p> - -<pre class="brush: js">var sym = new Symbol(); // TypeError</pre> - -<p>Це запобігає створенню явного об'єкта-обгортки <code>Symbol</code> замість нового символьного значення та може дивувати, оскільки створення явного об'єкта-обгортки для примітивних типів даних загалом можливе (для прикладу, <code>new Boolean</code>, <code>new String</code> та <code>new Number</code>).</p> - -<p>Якщо вам дуже потрібно створити об'єкт обгортку <code>Symbol</code>, ви можете скористатись функцією <code>Object()</code>:</p> - -<pre class="brush: js">var sym = Symbol('foo'); -typeof sym; // "symbol" -var symObj = Object(sym); -typeof symObj; // "object" -</pre> - -<h3 id="Спільні_символи_у_глобальному_реєстрі_символів">Спільні символи у глобальному реєстрі символів</h3> - -<p>Наведений синтаксис використання функції <code>Symbol()</code> не створить глобальний символ, доступний з усієї вашої кодової бази. Щоб створити символи, доступні в усіх файлах і навіть у різних сферах (кожна з яких має свою глобальну область видимості), використовуйте методи {{jsxref("Symbol.for()")}} та {{jsxref("Symbol.keyFor()")}}, щоб записувати та читати символи у глобальному реєстрі символів.</p> - -<h3 id="Пошук_символьних_властивостей_обєктів">Пошук символьних властивостей об'єктів</h3> - -<p>Метод {{jsxref("Object.getOwnPropertySymbols()")}} повертає масив символів та дозволяє знайти символьні властивості наданого об'єкта. Зауважте, що жоден об'єкт не ініціалізується з особистими символьними властивостями, отже, цей масив буде порожнім, якщо тільки ви не задали символьні властивості об'єкта.</p> - -<h2 id="Properties">Properties</h2> - -<dl> - <dt><code>Symbol.length</code></dt> - <dd>Length property whose value is 0.</dd> - <dt>{{jsxref("Symbol.prototype")}}</dt> - <dd>Represents the prototype for the <code>Symbol</code> constructor.</dd> -</dl> - -<h3 id="Well-known_symbols">Well-known symbols</h3> - -<p>In addition to your own symbols, JavaScript has some built-in symbols which represent internal language behaviors which were not exposed to developers in ECMAScript 5 and before. These symbols can be accessed using the following properties:</p> - -<h4 id="Iteration_symbols">Iteration symbols</h4> - -<dl> - <dt>{{jsxref("Symbol.iterator")}}</dt> - <dd>A method returning the default iterator for an object. Used by <a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...of"><code>for...of</code></a>.</dd> -</dl> - -<h4 id="Regular_expression_symbols">Regular expression symbols</h4> - -<dl> - <dt>{{jsxref("Symbol.match")}}</dt> - <dd>A method that matches against a string, also used to determine if an object may be used as a regular expression. Used by {{jsxref("String.prototype.match()")}}.</dd> - <dt>{{jsxref("Symbol.replace")}}</dt> - <dd>A method that replaces matched substrings of a string. Used by {{jsxref("String.prototype.replace()")}}.</dd> - <dt>{{jsxref("Symbol.search")}}</dt> - <dd>A method that returns the index within a string that matches the regular expression. Used by {{jsxref("String.prototype.search()")}}.</dd> - <dt>{{jsxref("Symbol.split")}}</dt> - <dd>A method that splits a string at the indices that match a regular expression. Used by {{jsxref("String.prototype.split()")}}.</dd> -</dl> - -<h4 id="Other_symbols">Other symbols</h4> - -<dl> - <dt>{{jsxref("Symbol.hasInstance")}}</dt> - <dd>A method determining if a constructor object recognizes an object as its instance. Used by {{jsxref("Operators/instanceof", "instanceof")}}.</dd> - <dt>{{jsxref("Symbol.isConcatSpreadable")}}</dt> - <dd>A Boolean value indicating if an object should be flattened to its array elements. Used by {{jsxref("Array.prototype.concat()")}}.</dd> - <dt>{{jsxref("Symbol.unscopables")}}</dt> - <dd>An object value of whose own and inherited property names are excluded from the <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/with">with</a></code> environment bindings of the associated object.</dd> - <dt>{{jsxref("Symbol.species")}}</dt> - <dd>A constructor function that is used to create derived objects.</dd> - <dt>{{jsxref("Symbol.toPrimitive")}}</dt> - <dd>A method converting an object to a primitive value.</dd> - <dt>{{jsxref("Symbol.toStringTag")}}</dt> - <dd>A string value used for the default description of an object. Used by {{jsxref("Object.prototype.toString()")}}.</dd> -</dl> - -<h2 id="Methods">Methods</h2> - -<dl> - <dt>{{jsxref("Symbol.for()", "Symbol.for(key)")}}</dt> - <dd>Searches for existing symbols with the given key and returns it if found. Otherwise a new symbol gets created in the global symbol registry with this key.</dd> - <dt>{{jsxref("Symbol.keyFor", "Symbol.keyFor(sym)")}}</dt> - <dd>Retrieves a shared symbol key from the global symbol registry for the given symbol.</dd> -</dl> - -<h2 id="Symbol_prototype"><code>Symbol</code> prototype</h2> - -<p>All Symbols inherit from {{jsxref("Symbol.prototype")}}.</p> - -<h3 id="Properties_2">Properties</h3> - -<p>{{page('en-US/Web/JavaScript/Reference/Global_Objects/Symbol/prototype','Properties')}}</p> - -<h3 id="Methods_2">Methods</h3> - -<p>{{page('en-US/Web/JavaScript/Reference/Global_Objects/Symbol/prototype','Methods')}}</p> - -<h2 id="Examples">Examples</h2> - -<h3 id="Using_the_typeof_operator_with_symbols">Using the <code>typeof</code> operator with symbols</h3> - -<p>The {{jsxref("Operators/typeof", "typeof")}} operator can help you to identify symbols.</p> - -<pre class="brush: js">typeof Symbol() === 'symbol' -typeof Symbol('foo') === 'symbol' -typeof Symbol.iterator === 'symbol' -</pre> - -<h3 id="Symbol_type_conversions">Symbol type conversions</h3> - -<p>Some things to note when working with type conversion of symbols.</p> - -<ul> - <li>When trying to convert a symbol to a number, a {{jsxref("TypeError")}} will be thrown<br> - (e.g. <code>+sym</code> or <code>sym | 0</code>).</li> - <li>When using loose equality, <code>Object(sym) == sym</code> returns <code>true.</code></li> - <li><code>Symbol("foo") + "bar" </code>throws a {{jsxref("TypeError")}} (can't convert symbol to string). This prevents you from silently creating a new string property name from a symbol, for example.</li> - <li>The <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/String#String_conversion">"safer" <code>String(sym)</code> conversion</a> works like a call to {{jsxref("Symbol.prototype.toString()")}} with symbols, but note that <code>new String(sym)</code> will throw.</li> -</ul> - -<h3 id="Symbols_and_for...in_iteration">Symbols and <code>for...in</code> iteration</h3> - -<p>Symbols are not enumerable in <a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...in"><code>for...in</code></a> iterations. In addition, {{jsxref("Object.getOwnPropertyNames()")}} will not return symbol object properties, however, you can use {{jsxref("Object.getOwnPropertySymbols()")}} to get these.</p> - -<pre class="brush: js">var obj = {}; - -obj[Symbol('a')] = 'a'; -obj[Symbol.for('b')] = 'b'; -obj['c'] = 'c'; -obj.d = 'd'; - -for (var i in obj) { - console.log(i); // logs "c" and "d" -}</pre> - -<h3 id="Symbols_and_JSON.stringify">Symbols and <code>JSON.stringify()</code></h3> - -<p>Symbol-keyed properties will be completely ignored when using <code>JSON.stringify()</code>:</p> - -<pre class="brush: js">JSON.stringify({[Symbol('foo')]: 'foo'}); -// '{}'</pre> - -<p>For more details, see {{jsxref("JSON.stringify()")}}.</p> - -<h3 id="Symbol_wrapper_objects_as_property_keys">Symbol wrapper objects as property keys</h3> - -<p>When a Symbol wrapper object is used as a property key, this object will be coerced to its wrapped symbol:</p> - -<pre class="brush: js">var sym = Symbol('foo'); -var obj = {[sym]: 1}; -obj[sym]; // 1 -obj[Object(sym)]; // still 1 -</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('ES2015', '#sec-symbol-objects', 'Symbol')}}</td> - <td>{{Spec2('ES2015')}}</td> - <td>Initial definition</td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol-objects', 'Symbol')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td></td> - </tr> - </tbody> -</table> - -<h2 id="Browser_compatibility">Browser compatibility</h2> - -<p>{{CompatibilityTable}}</p> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Chrome</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{CompatChrome(38)}}</td> - <td>{{CompatGeckoDesktop(36)}}</td> - <td>{{CompatNo}}</td> - <td>25</td> - <td>9</td> - </tr> - <tr> - <td>Symbol.iterator (@@iterator)</td> - <td>{{CompatChrome(38)}}</td> - <td>{{CompatGeckoDesktop(36)}}</td> - <td>{{CompatNo}}</td> - <td>25</td> - <td>9</td> - </tr> - <tr> - <td>Symbol.unscopables (@@unscopables)</td> - <td>{{CompatChrome(38)}}</td> - <td>{{CompatGeckoDesktop(48)}}</td> - <td>{{CompatNo}}</td> - <td>25</td> - <td>9</td> - </tr> - <tr> - <td>Symbol.match (@@match)</td> - <td>{{CompatChrome(50)}}</td> - <td>{{CompatGeckoDesktop(40)}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - </tr> - <tr> - <td>Symbol.species (@@species)</td> - <td>{{CompatChrome(51)}}</td> - <td>{{CompatGeckoDesktop(41)}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - </tr> - <tr> - <td>Symbol.toPrimitive (@@toPrimitive)</td> - <td>{{CompatChrome(48)}}</td> - <td>{{CompatGeckoDesktop(44)}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - </tr> - <tr> - <td>Symbol.replace (@@replace)</td> - <td>{{CompatChrome(50)}}</td> - <td>{{CompatGeckoDesktop(48)}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - </tr> - <tr> - <td>Symbol.search (@@search)</td> - <td>{{CompatChrome(50)}}</td> - <td>{{CompatGeckoDesktop(48)}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - </tr> - <tr> - <td>Symbol.split (@@split)</td> - <td>{{CompatChrome(50)}}</td> - <td>{{CompatGeckoDesktop(48)}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - </tr> - <tr> - <td>Symbol.isConcatSpreadable (@@isconcatspreadable)</td> - <td>{{CompatChrome(48)}}</td> - <td>{{CompatGeckoDesktop(48)}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - </tr> - <tr> - <td>Symbol.hasInstance (@@hasInstance)</td> - <td>{{CompatChrome(51)}}</td> - <td>{{CompatGeckoDesktop(50)}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - </tr> - <tr> - <td>Symbol.toStringTag (@@toStringTag)</td> - <td>{{CompatChrome(49)}}</td> - <td>{{CompatGeckoDesktop(51)}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Android</th> - <th>Chrome for Android</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatChrome(38)}}</td> - <td>{{CompatGeckoMobile(36)}}</td> - <td>{{CompatNo}}</td> - <td>25</td> - <td>9</td> - </tr> - <tr> - <td>Symbol.iterator (@@iterator)</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatChrome(38)}}</td> - <td>{{CompatGeckoMobile(36)}}</td> - <td>{{CompatNo}}</td> - <td>25</td> - <td>9</td> - </tr> - <tr> - <td>Symbol.unscopables (@@unscopables)</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatChrome(38)}}</td> - <td>{{CompatGeckoMobile(48)}}</td> - <td>{{CompatNo}}</td> - <td>25</td> - <td>9</td> - </tr> - <tr> - <td>Symbol.match (@@match)</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatGeckoMobile(40)}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - </tr> - <tr> - <td>Symbol.species (@@species)</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatGeckoMobile(41)}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - </tr> - <tr> - <td>Symbol.toPrimitive (@@toPrimitive)</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatGeckoMobile(44)}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - </tr> - <tr> - <td>Symbol.replace (@@replace)</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatGeckoMobile(48)}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - </tr> - <tr> - <td>Symbol.search (@@search)</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatGeckoMobile(48)}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - </tr> - <tr> - <td>Symbol.split (@@split)</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatGeckoMobile(48)}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - </tr> - <tr> - <td>Symbol.isConcatSpreadable (@@isconcatspreadable)</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatGeckoMobile(48)}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - </tr> - <tr> - <td>Symbol.hasInstance (@@hasInstance)</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatGeckoMobile(50)}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - </tr> - <tr> - <td>Symbol.toStringTag (@@toStringTag)</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatGeckoMobile(51)}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - </tr> - </tbody> -</table> -</div> - -<h2 id="See_also">See also</h2> - -<ul> - <li><a href="/en-US/docs/Glossary/Symbol">Glossary: Symbol data type</a></li> - <li>{{jsxref("Operators/typeof", "typeof")}}</li> - <li><a href="/en-US/docs/Web/JavaScript/Data_structures">Data types and data structures</a></li> - <li><a href="https://hacks.mozilla.org/2015/06/es6-in-depth-symbols/">"ES6 In Depth: Symbols" on hacks.mozilla.org</a></li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html b/files/uk/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html deleted file mode 100644 index 2c6541ad4d..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Symbol.isConcatSpreadable -slug: Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable -tags: - - ECMAScript 2015 - - JavaScript - - Symbol - - Властивість - - Символ -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable ---- -<div>{{JSRef}}</div> - -<p>Добревідомий символ <strong><code>Symbol.isConcatSpreadable</code></strong> використовують, щоб налаштувати вирівнювання об'єкта до масиву його елементів при використанні методу {{jsxref("Array.prototype.concat()")}}.</p> - -<div>{{EmbedInteractiveExample("pages/js/symbol-isconcatspreadable.html")}}</div> - - - -<h2 id="Опис">Опис</h2> - -<p>Символ <code>@@isConcatSpreadable</code> (<code>Symbol.isConcatSpreadable</code>) може бути визначений як особиста чи успадкована властивість, а його значення є булевою величиною. Він може контролювати поведінку масивів та подібних до масивів об'єктів:</p> - -<ul> - <li>Для масивів поведінкою за замовчуванням є розкладання (вирівнювання) елементів. <code>Symbol.isConcatSpreadable</code> може запобігти вирівнюванню у цих випадках.</li> - <li>Подібні до масивів об'єкти за замовчуванням не виконують розкладання чи вирівнювання. <code>Symbol.isConcatSpreadable</code> може виконати примусове вирівнювання у цих випадках.</li> -</ul> - -<p>{{js_property_attributes(0,0,0)}}</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Масиви">Масиви</h3> - -<p>За замовчуванням {{jsxref("Array.prototype.concat()")}} розкладає (вирівнює) масиви:</p> - -<pre class="brush: js notranslate">let alpha = ['а', 'б', 'в'], -let numeric = [1, 2, 3] - -let alphaNumeric = alpha.concat(numeric) - -console.log(alphaNumeric) // Результат: ['а', 'б', 'в', 1, 2, 3] -</pre> - -<p>Присвоївши <code>Symbol.isConcatSpreadable</code> значення <code>false</code>, ви можете відключити цю поведінку:</p> - -<pre class="brush: js notranslate">let alpha = ['а', 'б', 'в'], -let numeric = [1, 2, 3] - -numeric[Symbol.isConcatSpreadable] = false -let alphaNumeric = alpha.concat(numeric) - -console.log(alphaNumeric) // Результат: ['а', 'б', 'в', [1, 2, 3] ] -</pre> - -<h3 id="Подібні_до_масивів_обєкти">Подібні до масивів об'єкти</h3> - -<p>Подібні до масивів об'єкти за замовчуванням не розкладаються. <code>Symbol.isConcatSpreadable</code> необхідно присвоїти <code>true</code>, щоб отримати вирівняний масив:</p> - -<pre class="brush: js notranslate">let x = [1, 2, 3] - -let fakeArray = { - [Symbol.isConcatSpreadable]: true, - length: 2, - 0: 'всім', - 1: 'привіт' -} - -x.concat(fakeArray) // [1, 2, 3, "всім", "привіт"] -</pre> - -<div class="blockIndicator note"> -<p><strong>Заувага:</strong> Властивість <code>length</code> використовується, щоб контролювати кількість властивостей об'єкта, що будуть додані. У наведеному вище прикладі <code>length:2</code> вказує, що треба додати дві властивості.</p> -</div> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Специфікація</th> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol.isconcatspreadable', 'Symbol.isconcatspreadable')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Symbol.isConcatSpreadable")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Array.prototype.concat()")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/iterator/index.html b/files/uk/web/javascript/reference/global_objects/symbol/iterator/index.html deleted file mode 100644 index a41c7e413c..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/iterator/index.html +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: Symbol.iterator -slug: Web/JavaScript/Reference/Global_Objects/Symbol/iterator -tags: - - ECMAScript 2015 - - JavaScript - - Symbol - - Властивість - - Символ -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/iterator ---- -<div>{{JSRef}}</div> - -<p>Добревідомий символ <code><strong>Symbol.iterator</strong></code> визначає для об'єкта ітератор за замовчуванням. Використовується циклом <a href="/uk/docs/Web/JavaScript/Reference/Statements/for...of"><code>for...of</code></a>.</p> - -<p>{{EmbedInteractiveExample("pages/js/symbol-iterator.html")}}</p> - -<div class="hidden"> -<p>The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p> -</div> - -<h2 id="Опис">Опис</h2> - -<p>Коли виникає необхідність перебрати об'єкт (наприклад, на початку циклу <code>for..of</code>), його метод <code>@@iterator</code> викликається без аргументів, а <strong>ітератор</strong>, який він повертає, використовується для отримання значень, що перебираються.</p> - -<p>Деякі вбудовані типи мають визначену за замовчуванням поведінку під час перебору, в той час, як інші типи (такі як {{jsxref("Object")}}) її не мають. Вбудовані типи, що мають метод <code>@@iterator</code>, наступні:</p> - -<ul> - <li>{{jsxref("Array.@@iterator", "Array.prototype[@@iterator]()")}}</li> - <li>{{jsxref("TypedArray.@@iterator", "TypedArray.prototype[@@iterator]()")}}</li> - <li>{{jsxref("String.@@iterator", "String.prototype[@@iterator]()")}}</li> - <li>{{jsxref("Map.@@iterator", "Map.prototype[@@iterator]()")}}</li> - <li>{{jsxref("Set.@@iterator", "Set.prototype[@@iterator]()")}}</li> -</ul> - -<p>Дивіться більше інформації у статті<a href="/uk/docs/Web/JavaScript/Reference/Протоколи_перебору"> Протоколи перебору</a>.</p> - -<p>{{js_property_attributes(0,0,0)}}</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Створені_користувачем_ітерабельні_обєкти">Створені користувачем ітерабельні об'єкти</h3> - -<p>Ми можемо створювати власні ітерабельні об'єкти наступним чином:</p> - -<pre class="brush: js notranslate">var myIterable = {} -myIterable[Symbol.iterator] = function* () { - yield 1; - yield 2; - yield 3; -}; -[...myIterable] // [1, 2, 3] -</pre> - -<p>Або ітерабельні об'єкти можна визначити безпосередньо всередині класу чи об'єкта, використовуючи <a href="/uk/docs/Web/JavaScript/Reference/Operators/Ініціалізація_об’єктів#Обчислювані_імена_властивостей">обчислювані властивості</a>:</p> - -<pre class="brush: js notranslate">class Foo { - *[Symbol.iterator] () { - yield 1; - yield 2; - yield 3; - } -} - -const someObj = { - *[Symbol.iterator] () { - yield 'а'; - yield 'б'; - } -} - -[...new Foo] // [ 1, 2, 3 ] -[...someObj] // [ 'а', 'б' ]</pre> - -<h3 id="Погано_сформовані_ітерабельні_обєкти">Погано сформовані ітерабельні об'єкти</h3> - -<p>Якщо метод ітерабельного об'єкта <code>@@iterator</code> не повертає об'єкт ітератора, то це погано сформований ітерабельний об'єкт. Використання його в такому вигляді ймовірно призведе до викидання винятків під час виконання або помилкової поведінки:</p> - -<pre class="brush: js notranslate">var nonWellFormedIterable = {} -nonWellFormedIterable[Symbol.iterator] = () => 1 -[...nonWellFormedIterable] // TypeError: [] is not a function -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Специфікація</th> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol.iterator', 'Symbol.iterator')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - -<div class="hidden"> -<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> -</div> - -<p>{{Compat("javascript.builtins.Symbol.iterator")}}</p> - -<div id="compat-mobile"></div> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li><a href="/uk/docs/Web/JavaScript/Reference/Протоколи_перебору">Протоколи перебору</a></li> - <li>{{jsxref("Array.@@iterator", "Array.prototype[@@iterator]()")}}</li> - <li>{{jsxref("TypedArray.@@iterator", "TypedArray.prototype[@@iterator]()")}}</li> - <li>{{jsxref("String.@@iterator", "String.prototype[@@iterator]()")}}</li> - <li>{{jsxref("Map.@@iterator", "Map.prototype[@@iterator]()")}}</li> - <li>{{jsxref("Set.@@iterator", "Set.prototype[@@iterator]()")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/keyfor/index.html b/files/uk/web/javascript/reference/global_objects/symbol/keyfor/index.html deleted file mode 100644 index 52ae98f144..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/keyfor/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Symbol.keyFor() -slug: Web/JavaScript/Reference/Global_Objects/Symbol/keyFor -tags: - - ECMAScript 2015 - - JavaScript - - Symbol - - Символ - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/keyFor ---- -<div>{{JSRef}}</div> - -<p>Метод <strong><code>Symbol.keyFor(sym)</code></strong> отримує ключ спільного символа з глобального реєстру для наданого символа.</p> - -<div>{{EmbedInteractiveExample("pages/js/symbol-keyfor.html")}}</div> - - - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox notranslate">Symbol.keyFor(<var>sym</var>);</pre> - -<h3 id="Параметри">Параметри</h3> - -<dl> - <dt><code><var>sym</var></code></dt> - <dd>Символ, обов'язковий. Символ, для якого потрібно знайти ключ.</dd> -</dl> - -<h3 id="Повертає">Повертає</h3> - -<p>Рядкове представлення ключа для наданого символа, якщо він був знайдений у глобальному реєстрі; інакше, {{jsxref("undefined")}}.</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Використання_keyFor">Використання keyFor()</h3> - -<pre class="brush: js notranslate">var globalSym = Symbol.for('foo'); // створити новий глобальний символ -Symbol.keyFor(globalSym); // "foo" - -var localSym = Symbol(); -Symbol.keyFor(localSym); // undefined - -// добревідомі символи не є зареєстрованими -// у глобальному реєстрі символів -Symbol.keyFor(Symbol.iterator) // undefined -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Специфікація</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol.keyfor', 'Symbol.keyFor')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Symbol.keyFor")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Symbol.for()")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/match/index.html b/files/uk/web/javascript/reference/global_objects/symbol/match/index.html deleted file mode 100644 index fd076f301f..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/match/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Symbol.match -slug: Web/JavaScript/Reference/Global_Objects/Symbol/match -tags: - - ECMAScript 2015 - - JavaScript - - Symbol - - Властивість - - Символ -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/match ---- -<div>{{JSRef}}</div> - -<p>Добревідомий символ <code><strong>Symbol.match</strong></code> визначає збіг регулярного виразу з рядком. Ця функція викликається методом {{jsxref("String.prototype.match()")}}.</p> - -<div>{{EmbedInteractiveExample("pages/js/symbol-match.html")}}</div> - - - -<h2 id="Опис">Опис</h2> - -<p>Ця функція також використовується, щоб з'ясувати, чи об'єкти поводяться як регулярні вирази. Наприклад, методи {{jsxref("String.prototype.startsWith()")}}, {{jsxref("String.prototype.endsWith()")}} та {{jsxref("String.prototype.includes()")}} перевіряють, чи є перший аргумент регулярним виразом, та викидають {{jsxref("TypeError")}}, якщо це так. Отже, якщо символ <code>match</code> має значення <code>false</code> (або <a href="/uk/docs/Glossary/Falsy">хибне</a> значення), він вказує, що об'єкт не призначений для використання в якості регулярного виразу.</p> - -<p>{{js_property_attributes(0,0,0)}}</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Відключення_перевірки_isRegExp">Відключення перевірки <code>isRegExp</code></h3> - -<p>Наступний код викине помилку {{jsxref("TypeError")}}:</p> - -<pre class="brush: js notranslate">'/bar/'.startsWith(/bar/); - -// Викидає TypeError, оскільки /bar/ є регулярним виразом, -// а Symbol.match не змінений.</pre> - -<p>Однак, якщо ви присвоїте <code>Symbol.match</code> значення <code>false</code>, перевірка <code>isRegExp</code> (яка використовує властивість <code>match</code>) вкаже, що об'єкт не є об'єктом регулярного виразу. Як наслідок, методи <code>startsWith</code> та <code>endsWith</code> не викидатимуть <code>TypeError</code>.</p> - -<pre class="brush: js notranslate">var re = /foo/; -re[Symbol.match] = false; -'/foo/'.startsWith(re); // true -'/baz/'.endsWith(re); // false -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Специфікація</th> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol.match', 'Symbol.match')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Symbol.match")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Symbol.replace")}}</li> - <li>{{jsxref("Symbol.search")}}</li> - <li>{{jsxref("Symbol.split")}}</li> - <li>{{jsxref("RegExp.@@match", "RegExp.prototype[@@match]()")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/matchall/index.html b/files/uk/web/javascript/reference/global_objects/symbol/matchall/index.html deleted file mode 100644 index af531d4376..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/matchall/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Symbol.matchAll -slug: Web/JavaScript/Reference/Global_Objects/Symbol/matchAll -tags: - - JavaScript - - Symbol - - Властивість - - Довідка - - Символ -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/matchAll ---- -<div>{{JSRef}}</div> - -<p>Добревідомий символ <code><strong>Symbol.matchAll</strong></code> повертає ітератор, який видає збіги регулярного виразу з рядком. Ця функція викликається методом {{jsxref("String.prototype.matchAll()")}}.</p> - -<div>{{EmbedInteractiveExample("pages/js/symbol-matchall.html","shorter")}}</div> - - - -<h2 id="Опис">Опис</h2> - -<div> -<p>Цей символ використовується для {{jsxref("String.prototype.matchAll()")}} та зокрема у {{jsxref("RegExp.@@matchAll", "RegExp.prototype[@@matchAll]()")}}. Наступні два приклади повертають однаковий результат:</p> - -<pre class="brush: js notranslate">'абв'.matchAll(/а/); - -/а/[Symbol.matchAll]('абв');</pre> - -<p>Цей метод існує для налаштування поведінки пошуку збігів всередині підкласів {{jsxref("RegExp")}}.</p> - -<p>{{js_property_attributes(0,0,0)}}</p> -</div> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Використання_Symbol.matchAll">Використання Symbol.matchAll</h3> - -<pre class="brush: js notranslate">let re = /[0-9]+/g; -let str = '2016-01-02|2019-03-07'; - -const numbers = { - *[Symbol.matchAll] (str) { - for (const n of str.matchAll(/[0-9]+/g)) - yield n[0]; - } -}; - -console.log(Array.from(str.matchAll(numbers))); -// Array ["2016", "01", "02", "2019", "03", "07"] -</pre> - -<p>Дивіться більше прикладів у {{jsxref("String.prototype.matchAll()")}} та {{jsxref("RegExp.@@matchAll", "RegExp.prototype[@@matchAll]()")}}.</p> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Специфікація</th> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol.matchall', 'Symbol.matchAll')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Symbol.matchAll")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("String.prototype.matchAll()")}}</li> - <li>{{jsxref("RegExp.@@matchAll", "RegExp.prototype[@@matchAll]()")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/replace/index.html b/files/uk/web/javascript/reference/global_objects/symbol/replace/index.html deleted file mode 100644 index 0f37a4a289..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/replace/index.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Symbol.replace -slug: Web/JavaScript/Reference/Global_Objects/Symbol/replace -tags: - - ECMAScript 2015 - - JavaScript - - Symbol - - Властивість - - Символ -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/replace ---- -<div>{{JSRef}}</div> - -<p>Добревідомий символ <code><strong>Symbol.replace</strong></code> визначає метод, який замінює збіги у рядку. Ця функція викликається методом {{jsxref("String.prototype.replace()")}}.</p> - -<p>Щоб дізнатись більше, дивіться {{jsxref("RegExp.@@replace", "RegExp.prototype[@@replace]()")}} та {{jsxref("String.prototype.replace()")}}.</p> - -<div>{{EmbedInteractiveExample("pages/js/symbol-replace.html")}}</div> - - - -<div>{{js_property_attributes(0,0,0)}}</div> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Використання_Symbol.replace">Використання Symbol.replace</h3> - -<pre class="brush: js notranslate">class CustomReplacer { - constructor(value) { - this.value = value; - } - [Symbol.replace](string) { - return string.replace(this.value, '#!@?'); - } -} - -console.log('football'.replace(new CustomReplacer('foo'))); -// очікуваний результат: "#!@?tball"</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Специфікація</th> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol.replace', 'Symbol.replace')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Symbol.replace")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Symbol.match")}}</li> - <li>{{jsxref("Symbol.search")}}</li> - <li>{{jsxref("Symbol.split")}}</li> - <li>{{jsxref("RegExp.@@replace", "RegExp.prototype[@@replace]()")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/search/index.html b/files/uk/web/javascript/reference/global_objects/symbol/search/index.html deleted file mode 100644 index 36aad26385..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/search/index.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Symbol.search -slug: Web/JavaScript/Reference/Global_Objects/Symbol/search -tags: - - ECMAScript 2015 - - JavaScript - - Symbol - - Властивість - - Символ -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/search ---- -<div>{{JSRef}}</div> - -<p>Добревідомий символ <code><strong>Symbol.search</strong></code> визначає метод, який повертає індекс у рядку, що збігається з регулярним виразом. Ця функція викликається методом {{jsxref("String.prototype.search()")}}.</p> - -<p>Щоб дізнатись більше, дивіться {{jsxref("RegExp.@@search", "RegExp.prototype[@@search]()")}} та {{jsxref("String.prototype.search()")}}.</p> - -<div>{{EmbedInteractiveExample("pages/js/symbol-search.html")}}</div> - - - -<div>{{js_property_attributes(0,0,0)}}</div> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Користувацький_пошук_у_рядку">Користувацький пошук у рядку</h3> - -<pre class="brush: js notranslate">class caseInsensitiveSearch { - constructor(value) { - this.value = value.toLowerCase(); - } - [Symbol.search](string) { - return string.toLowerCase().indexOf(this.value); - } -} - -console.log('foobar'.search(new caseInsensitiveSearch('BaR'))); -// очікуваний результат: 3</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Специфікація</th> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol.search', 'Symbol.search')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Symbol.search")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Symbol.match")}}</li> - <li>{{jsxref("Symbol.replace")}}</li> - <li>{{jsxref("Symbol.split")}}</li> - <li>{{jsxref("RegExp.@@search", "RegExp.prototype[@@search]()")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/species/index.html b/files/uk/web/javascript/reference/global_objects/symbol/species/index.html deleted file mode 100644 index 0698c840d5..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/species/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Symbol.species -slug: Web/JavaScript/Reference/Global_Objects/Symbol/species -tags: - - ECMAScript 2015 - - JavaScript - - Symbol - - Властивість - - Символ -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/species ---- -<div>{{JSRef}}</div> - -<p>Добревідомий символ <code><strong>Symbol.species</strong></code> визначає властивість, значенням якої є функція, яку використовує конструктор для створення похідних об'єктів.</p> - -<div>{{EmbedInteractiveExample("pages/js/symbol-species.html")}}</div> - - - -<h2 id="Опис">Опис</h2> - -<p>Властивість-аксесор species дозволяє підкласам перевизначати конструктор для об'єктів.</p> - -<p>{{js_property_attributes(0,0,0)}}</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Використання_species">Використання species</h3> - -<p>Можливо, ви захочете повертати об'єкти {{jsxref("Array")}} у вашому похідному класі масивів <code>MyArray</code>. Наприклад, при використанні методів, таких як {{jsxref("Array.map", "map()")}}, які повертають конструктор за замовчуванням, ви бажаєте, щоб вони повертали батьківський об'єкт <code>Array</code> замість об'єкта <code>MyArray</code>. Символ species дозволяє це зробити:</p> - -<pre class="brush: js notranslate">class MyArray extends Array { - // Перевизначаємо species на батьківський конструктор Array - static get [Symbol.species]() { return Array; } -} -let a = new MyArray(1,2,3); -let mapped = a.map(x => x * x); - -console.log(mapped instanceof MyArray); // false -console.log(mapped instanceof Array); // true -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Специфікація</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol.species', 'Symbol.species')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Symbol.species")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Map.@@species", "Map[@@species]")}}</li> - <li>{{jsxref("Set.@@species", "Set[@@species]")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/split/index.html b/files/uk/web/javascript/reference/global_objects/symbol/split/index.html deleted file mode 100644 index baabe4748f..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/split/index.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Symbol.split -slug: Web/JavaScript/Reference/Global_Objects/Symbol/split -tags: - - ECMAScript 2015 - - JavaScript - - Symbol - - Властивість - - Символ -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/split ---- -<div>{{JSRef}}</div> - -<p>Добревідомий символ <code><strong>Symbol.split</strong></code> визначає метод, що розбиває рядок за індексами, які збігаються з регулярним виразом. Ця функція викликається методом {{jsxref("String.prototype.split()")}}.</p> - -<p>Щоб дізнатись більше, дивіться {{jsxref("RegExp.@@split", "RegExp.prototype[@@split]()")}} та {{jsxref("String.prototype.split()")}}.</p> - -<div>{{EmbedInteractiveExample("pages/js/symbol-split.html")}}</div> - -<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</div> - -<div>{{js_property_attributes(0,0,0)}}</div> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Користувацьке_розбиття_з_переверненням">Користувацьке розбиття з переверненням</h3> - -<pre class="brush: js notranslate">class ReverseSplit { - [Symbol.split](string) { - const array = string.split(' '); - return array.reverse(); - } -} - -console.log('Another one bites the dust'.split(new ReverseSplit())); -// очікуваний результат: [ "dust", "the", "bites", "one", "Another" ]</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Специфікація</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol.split', 'Symbol.split')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Symbol.split")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Symbol.match")}}</li> - <li>{{jsxref("Symbol.replace")}}</li> - <li>{{jsxref("Symbol.search")}}</li> - <li>{{jsxref("RegExp.@@split", "RegExp.prototype[@@split]()")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/symbol/index.html b/files/uk/web/javascript/reference/global_objects/symbol/symbol/index.html deleted file mode 100644 index 8ed616cee6..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/symbol/index.html +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Конструктор Symbol() -slug: Web/JavaScript/Reference/Global_Objects/Symbol/Symbol -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/Symbol ---- -<div>{{JSRef}}</div> - -<p>Конструктор <code>Symbol()</code> повертає значення типу <strong>symbol</strong>, але він не є повноцінним конструктором, оскільки не підтримує синтаксис "<code>new Symbol()</code>", а також не призначений для створення підкласів. Його можна використовувати як значення блоку <code><a href="/uk/docs/Web/JavaScript/Reference/Classes/extends">extends</a></code> у визначенні класу, але виклик його через <code><a href="/uk/docs/Web/JavaScript/Reference/Operators/super">super</a></code> спричинить виняток.</p> - -<div>{{EmbedInteractiveExample("pages/js/symbol-constructor.html", "taller")}}</div> - -<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</div> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox notranslate">Symbol([<var>description</var>])</pre> - -<h3 id="Параметри">Параметри</h3> - -<dl> - <dt><code><var>description</var></code> {{optional_inline}}</dt> - <dd>Рядок. Опис символа, який може використовуватись для відлагодження, але не для доступу до самого символа.</dd> -</dl> - -<h2 id="Прилади">Прилади</h2> - -<h3 id="Створення_символів">Створення символів</h3> - -<p>Щоб створити новий примітивний символ, напишіть <code>Symbol()</code> з необов'язковим рядком опису:</p> - -<pre class="brush: js notranslate">let sym1 = Symbol() -let sym2 = Symbol('foo') -let sym3 = Symbol('foo') -</pre> - -<p>Наведений вище код створює три нові символи. Зауважте, що <code>Symbol("foo")</code> не приводить рядок <code>"foo"</code> до символа. Він кожен раз створює новий символ:</p> - -<pre class="brush: js notranslate">Symbol('foo') === Symbol('foo') // false -</pre> - -<h3 id="new_Symbol...">new Symbol(...)</h3> - -<p>Наступний синтаксис з оператором {{jsxref("Operators/new", "new")}} викине помилку {{jsxref("TypeError")}}:</p> - -<pre class="brush: js notranslate">let sym = new Symbol() // TypeError -</pre> - -<p>Це запобігає створенню явного об'єкта-обгортки <code>Symbol</code> замість нового символьного значення та може здивувати, оскільки створення таких об'єктів-обгорток навколо примітивних типів даних загалом можливе (наприклад, <code>new Boolean</code>, <code>new String</code> та <code>new Number</code>).</p> - -<p>Якщо вам дійсно потрібно створити об'єкт-обгортку <code>Symbol</code>, ви можете скористатись фукнцією <code>Object()</code>:</p> - -<pre class="brush: js notranslate">let sym = Symbol('foo'); -let symObj = Object(sym); -typeof sym // => "symbol" -typeof symObj // => "object" -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Специфікація</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol-constructor', 'Symbol constructor')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Symbol.Symbol")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li><a href="/uk/docs/Glossary/Символ">Словник: символьний тип даних</a></li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/toprimitive/index.html b/files/uk/web/javascript/reference/global_objects/symbol/toprimitive/index.html deleted file mode 100644 index 0f9567a8bb..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/toprimitive/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Symbol.toPrimitive -slug: Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive ---- -<div>{{JSRef}}</div> - -<p><code><strong>Symbol.toPrimitive</strong></code> - це символ, який визначає властивість зі значенням-функцією, що викликається для перетворення об'єкта на відповідне просте значення.</p> - -<div>{{EmbedInteractiveExample("pages/js/symbol-toprimitive.html")}}</div> - - - -<h2 id="Опис">Опис</h2> - -<p>За допомогою властивості <strong><code>Symbol.toPrimitive</code></strong> (що використовується в якості функції) об'єкт може перетворюватись на прості значення. Функція викликається з рядковим аргументом <strong><code>hint</code></strong>, який вказує бажаний тип отриманого примітиву. Аргумент <strong><code>hint</code></strong> може мати значення <code>"<em>number</em>"</code>, <code>"<em>string</em>"</code> або <code>"<em>default</em>"</code>.</p> - -<p>{{js_property_attributes(0,0,0)}}</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Модифікація_простих_значень_отриманих_перетворенням_обєкта">Модифікація простих значень, отриманих перетворенням об'єкта</h3> - -<p>Наступний приклад описує, як властивість <strong><code>Symbol.toPrimitive</code></strong> може змінювати прості значення, отримані з об'єкта.</p> - -<pre class="brush: js notranslate">// Об'єкт без властивості Symbol.toPrimitive. -var obj1 = {}; -console.log(+obj1); // NaN -console.log(`${obj1}`); // "[object Object]" -console.log(obj1 + ''); // "[object Object]" - -// Об'єкт з властивістю Symbol.toPrimitive. -var obj2 = { - [Symbol.toPrimitive](hint) { - if (hint == 'number') { - return 10; - } - if (hint == 'string') { - return 'привіт'; - } - return true; - } -}; -console.log(+obj2); // 10 -- hint дорівнює "number" -console.log(`${obj2}`); // "привіт" -- hint дорівнює "string" -console.log(obj2 + ''); // "true" -- hint дорівнює "default" -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Специфікація</th> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol.toprimitive', 'Symbol.toPrimitive')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Symbol.toPrimitive")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Date.@@toPrimitive", "Date.prototype[@@toPrimitive]")}}</li> - <li>{{jsxref("Symbol.@@toPrimitive", "Symbol.prototype[@@toPrimitive]")}}</li> - <li>{{jsxref("Object.prototype.toString()")}}</li> - <li>{{jsxref("Object.prototype.valueOf()")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/tosource/index.html b/files/uk/web/javascript/reference/global_objects/symbol/tosource/index.html deleted file mode 100644 index 0abc2fb1cb..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/tosource/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Symbol.prototype.toSource() -slug: Web/JavaScript/Reference/Global_Objects/Symbol/toSource -tags: - - JavaScript - - Symbol - - Символ - - застарілий - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/toSource ---- -<div>{{JSRef}} {{obsolete_header}}</div> - -<p>Метод <strong><code>toSource()</code></strong> повертає рядкове представлення першокоду об'єкта.</p> - -<p>Цей метод зазвичай викликається внутрішньо у JavaScript.</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox notranslate"><var>Symbol</var>.toSource() - -var sym = Symbol() -sym.toSource()</pre> - -<h3 id="Повертає">Повертає</h3> - -<p>Рядкове представлення першокоду об'єкта.</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Вбудована_функція">Вбудована функція</h3> - -<p>Для вбудованого об'єкта <code>Symbol</code> метод <code>toSource</code> повертає наступний рядок, який вказує, що першокод недоступний:</p> - -<pre class="brush:js notranslate">"function Symbol() { - [native code] -}"</pre> - -<p>Для екземплярів <code>Symbol</code>, <code>toSource</code> повертає рядок, що відображає першокод.</p> - -<pre class="brush: js notranslate">"Symbol()"</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<p>Не є частиною жодного стандарту.</p> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Symbol.toSource")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Object.prototype.toSource()")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/tostring/index.html b/files/uk/web/javascript/reference/global_objects/symbol/tostring/index.html deleted file mode 100644 index 37d28602a2..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/tostring/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Symbol.prototype.toString() -slug: Web/JavaScript/Reference/Global_Objects/Symbol/toString -tags: - - ECMAScript 2015 - - JavaScript - - Symbol - - Символ - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/toString ---- -<div>{{JSRef}}</div> - -<p>Метод <strong><code>toString()</code></strong> повертає рядок, що відображає вказаний об'єкт {{jsxref("Symbol")}}.</p> - -<div>{{EmbedInteractiveExample("pages/js/symbol-prototype-tostring.html")}}</div> - -<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</div> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="notranslate">Symbol().toString()</pre> - -<h3 id="Повертає">Повертає</h3> - -<p>Рядкове представлення вказаного об'єкта {{jsxref("Symbol")}}.</p> - -<h2 id="Опис">Опис</h2> - -<p>Об'єкт {{jsxref("Symbol")}} заміщує метод <code>toString</code> об'єкта {{jsxref("Object")}}; він не успадковує {{jsxref("Object.prototype.toString()")}}. Для об'єктів <code>Symbol</code> метод <code>toString</code> повертає рядкове представлення об'єкта.</p> - -<h3 id="Обєднання_з_рядками_не_виконується">Об'єднання з рядками не виконується</h3> - -<p>Хоча ви можете викликати <code>toString()</code> на символах, ви не можете об'єднувати їх з рядками:</p> - -<pre class="brush: js notranslate">Symbol('foo') + 'bar' // TypeError: Can't convert symbol to string</pre> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Використання_toString">Використання toString()</h3> - -<pre class="brush: js notranslate">Symbol('desc').toString() // "Symbol(desc)" - -// добревідомі символи -Symbol.iterator.toString() // "Symbol(Symbol.iterator) - -// глобальні символи -Symbol.for('foo').toString() // "Symbol(foo)" -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Специфікація</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol.prototype.tostring', 'Symbol.prototype.toString')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Symbol.toString")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Object.prototype.toString()")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/tostringtag/index.html b/files/uk/web/javascript/reference/global_objects/symbol/tostringtag/index.html deleted file mode 100644 index 9faa5645ca..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/tostringtag/index.html +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Symbol.toStringTag -slug: Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag -tags: - - ECMAScript 2015 - - JavaScript - - Symbol - - Властивість - - Довідка - - Символ -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag ---- -<div>{{JSRef}}</div> - -<p>Добревідомий символ <strong><code>Symbol.toStringTag</code></strong> - це властивість з рядковим значенням, що використовується для створення заданого рядкового опису об'єкта. До неї звертається метод {{jsxref("Object.prototype.toString()")}}.</p> - -<div>{{EmbedInteractiveExample("pages/js/symbol-tostringtag.html")}}</div> - -<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</div> - -<div>{{js_property_attributes(0,0,0)}}</div> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Теги_за_замовчуванням">Теги за замовчуванням</h3> - -<pre class="brush: js notranslate">Object.prototype.toString.call('foo'); // "[object String]" -Object.prototype.toString.call([1, 2]); // "[object Array]" -Object.prototype.toString.call(3); // "[object Number]" -Object.prototype.toString.call(true); // "[object Boolean]" -Object.prototype.toString.call(undefined); // "[object Undefined]" -Object.prototype.toString.call(null); // "[object Null]" -// ... та інші -</pre> - -<h3 id="Вбудовані_символи_toStringTag">Вбудовані символи toStringTag</h3> - -<pre class="brush: js notranslate">Object.prototype.toString.call(new Map()); // "[object Map]" -Object.prototype.toString.call(function* () {}); // "[object GeneratorFunction]" -Object.prototype.toString.call(Promise.resolve()); // "[object Promise]" -// ... та інші -</pre> - -<h3 id="Користувацькі_класи_з_тегом_за_замовчуванням">Користувацькі класи з тегом за замовчуванням</h3> - -<p>При створенні власного класу, JavaScript за замовчуванням виставляє тег "Object":</p> - -<pre class="brush: js notranslate">class ValidatorClass {} - -Object.prototype.toString.call(new ValidatorClass()); // "[object Object]" -</pre> - -<h3 id="Користувацький_тег_з_toStringTag">Користувацький тег з toStringTag</h3> - -<p>Отже, за допомогою <code>toStringTag</code> ви можете налаштувати свій власний тег:</p> - -<pre class="brush: js notranslate">class ValidatorClass { - get [Symbol.toStringTag]() { - return 'Validator'; - } -} - -Object.prototype.toString.call(new ValidatorClass()); // "[object Validator]" -</pre> - -<h3 id="toStringTag_доступний_на_усіх_DOM-обєктах">toStringTag доступний на усіх DOM-об'єктах</h3> - -<p>Завдяки <a href="https://github.com/heycam/webidl/pull/357">змінам у специфікації WebIDL</a> в середині 2020, переглядачі додають властивість <code>Symbol.toStringTag</code> до усіх DOM-об'єктів. Наприклад, для звернення до властивості <code>Symbol.toStringTag</code> у {{domxref("HTMLButtonElement")}}:</p> - -<pre class="brush: js notranslate">let test = document.createElement('button'); -test.toString(); // Вертає [object HTMLButtonElement] -test[Symbol.toStringTag]; // Вертає HTMLButtonElement</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Специфікація</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol.tostringtag', 'Symbol.toStringTag')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Symbol.toStringTag")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Object.prototype.toString()")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/unscopables/index.html b/files/uk/web/javascript/reference/global_objects/symbol/unscopables/index.html deleted file mode 100644 index 5b90c252d4..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/unscopables/index.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: Symbol.unscopables -slug: Web/JavaScript/Reference/Global_Objects/Symbol/unscopables -tags: - - ECMAScript 2015 - - JavaScript - - Symbol - - Властивість - - Символ -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/unscopables ---- -<div>{{JSRef}}</div> - -<p>Добревідомий символ <strong><code>Symbol.unscopables</code></strong> використовується, щоб визначити об'єкт, чиї імена особистих та успадкованих властивостей виключаються з прив'язок оточення <code><a href="/uk/docs/Web/JavaScript/Reference/Statements/with">with</a></code> для асоційованого об'єкта.</p> - -<div>{{EmbedInteractiveExample("pages/js/symbol-unscopables.html")}}</div> - - - -<h2 id="Опис">Опис</h2> - -<p>Символ <code>@@unscopables</code> (<code>Symbol.unscopables</code>) можна визначити на будь-якому об'єкті, щоб запобігти розкриттю імен властивостей в якості лексичних змінних у прив'язках оточення <code><a href="/uk/docs/Web/JavaScript/Reference/Statements/with">with</a></code>. Зауважте, що при використанні <a href="/en-US/docs/Web/JavaScript/Reference/Strict_mode">строгого режиму</a> інструкції <code>with</code> недоступні та, відповідно, не потребують цього символа.</p> - -<p>Присвоєння властивості значення <code>true</code> у об'єкті <code>unscopables</code> зробить її невидимою (<em>unscopable</em>), і, таким чином, вона не з'явиться у змінних лексичної області видимості. Присвоєння властивості значення <code>false</code> зробить її видимою (<code>scopable</code>), відповідно, вона з'явиться у змінних лексичної області видимості.</p> - -<p>{{js_property_attributes(0,0,0)}}</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Видимість_у_інструкціях_with">Видимість у інструкціях with</h3> - -<p>Наступний код добре працює у версіях ES5 та нижче. Однак, у ECMAScript 2015 та пізніших версіях був запроваджений метод {{jsxref("Array.prototype.keys()")}}. Це означає, що всередині оточення <code>with</code> "keys" тепер буде методом, а не змінною. Саме тоді був доданий символ <code>unscopables</code>. Вбудоване налаштування <code>unscopables</code> реалізоване у вигляді {{jsxref("Array.@@unscopables", "Array.prototype[@@unscopables]")}}, щоб запобігти потраплянню деяких методів масиву у область видимості <code>with</code>.</p> - -<pre class="brush: js notranslate">var keys = []; - -with (Array.prototype) { - keys.push('something'); -} - -Object.keys(Array.prototype[Symbol.unscopables]); -// ["copyWithin", "entries", "fill", "find", "findIndex", -// "includes", "keys", "values"] -</pre> - -<h3 id="Unscopables_у_обєктах">Unscopables у об'єктах</h3> - -<p>Ви також можете налаштувати <code>unscopables</code> для своїх власних об'єктів.</p> - -<pre class="brush: js notranslate">var obj = { - foo: 1, - bar: 2 -}; - -obj[Symbol.unscopables] = { - foo: false, - bar: true -}; - -with (obj) { - console.log(foo); // 1 - console.log(bar); // ReferenceError: bar is not defined -} -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Специфікація</th> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol.unscopables', 'Symbol.unscopables')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Symbol.unscopables")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Array.@@unscopables", "Array.prototype[@@unscopables]")}}</li> - <li>оператор <code><a href="/uk/docs/Web/JavaScript/Reference/Statements/with">with</a></code> (недоступний у <a href="/uk/docs/Web/JavaScript/Reference/Strict_mode">строгому режимі</a>)</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/symbol/valueof/index.html b/files/uk/web/javascript/reference/global_objects/symbol/valueof/index.html deleted file mode 100644 index 253b1eac7c..0000000000 --- a/files/uk/web/javascript/reference/global_objects/symbol/valueof/index.html +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Symbol.prototype.valueOf() -slug: Web/JavaScript/Reference/Global_Objects/Symbol/valueOf -tags: - - ECMAScript 2015 - - JavaScript - - Symbol - - Символ - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/valueOf ---- -<div>{{JSRef}}</div> - -<p>Метод <strong><code>valueOf()</code></strong> повертає примітивне значення об'єкта Symbol.</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="notranslate">Symbol().valueOf() -</pre> - -<h3 id="Повертає">Повертає</h3> - -<p>Примітивне значення вказаного об'єкта {{jsxref("Symbol")}}.</p> - -<h2 id="Опис">Опис</h2> - -<p>Метод <code>valueOf()</code> об'єкта {{jsxref("Symbol")}} повертає примітивне значення об'єкта Symbol у вигляді символьного типу даних.</p> - -<p>JavaScript викликає метод <code>valueOf()</code> для перетворення об'єкта на примітивне значення. Вам рідко знадобиться викликати метод <code>valueOf()</code> власноруч; JavaScript автоматично запускає його, зустрівши об'єкт там, де очікується примітивне значення.</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Використання_valueOf">Використання valueOf()</h3> - -<pre class="brush: js notranslate">const sym = Symbol("example"); -sym === sym.valueOf(); // true -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Специфікація</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol.prototype.valueof', 'Symbol.prototype.valueOf')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Symbol.valueOf")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Object.prototype.valueOf()")}}</li> -</ul> |