diff options
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html')
| -rw-r--r-- | files/uk/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html | 99 |
1 files changed, 99 insertions, 0 deletions
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 new file mode 100644 index 0000000000..2c6541ad4d --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html @@ -0,0 +1,99 @@ +--- +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> |
