--- 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 ---
{{JSRef}}

Добревідомий символ Symbol.isConcatSpreadable використовують, щоб налаштувати вирівнювання об'єкта до масиву його елементів при використанні методу {{jsxref("Array.prototype.concat()")}}.

{{EmbedInteractiveExample("pages/js/symbol-isconcatspreadable.html")}}

Опис

Символ @@isConcatSpreadable (Symbol.isConcatSpreadable) може бути визначений як особиста чи успадкована властивість, а його значення є булевою величиною. Він може контролювати поведінку масивів та подібних до масивів об'єктів:

{{js_property_attributes(0,0,0)}}

Приклади

Масиви

За замовчуванням {{jsxref("Array.prototype.concat()")}} розкладає (вирівнює) масиви:

let alpha = ['а', 'б', 'в'],
let numeric = [1, 2, 3]

let alphaNumeric = alpha.concat(numeric)

console.log(alphaNumeric)  // Результат: ['а', 'б', 'в', 1, 2, 3]

Присвоївши Symbol.isConcatSpreadable значення false, ви можете відключити цю поведінку:

let alpha = ['а', 'б', 'в'],
let numeric = [1, 2, 3]

numeric[Symbol.isConcatSpreadable] = false
let alphaNumeric = alpha.concat(numeric)

console.log(alphaNumeric)  // Результат: ['а', 'б', 'в', [1, 2, 3] ]

Подібні до масивів об'єкти

Подібні до масивів об'єкти за замовчуванням не розкладаються. Symbol.isConcatSpreadable необхідно присвоїти true, щоб отримати вирівняний масив:

let x = [1, 2, 3]

let fakeArray = {
  [Symbol.isConcatSpreadable]: true,
  length: 2,
  0: 'всім',
  1: 'привіт'
}

x.concat(fakeArray)  // [1, 2, 3, "всім", "привіт"]

Заувага: Властивість length використовується, щоб контролювати кількість властивостей об'єкта, що будуть додані. У наведеному вище прикладі length:2 вказує, що треба додати дві властивості.

Специфікації

Специфікація
{{SpecName('ESDraft', '#sec-symbol.isconcatspreadable', 'Symbol.isconcatspreadable')}}

Сумісність з веб-переглядачами

{{Compat("javascript.builtins.Symbol.isConcatSpreadable")}}

Див. також