--- title: Symbol.isConcatSpreadable slug: Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable tags: - ECMScript 2015 - JavaScript - Property translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable ---
Symbol.isConcatSpreadable
- это известный символ, который используется для определения, должен ли объект редуцироваться к сумме своих элементов при использовании метода {{jsxref("Array.prototype.concat()")}}.
@@isConcatSpreadable-символ
(Symbol.isConcatSpreadable
) можно определить как собственное или унаследованное свойство с булевым значением. Оно контролирует поведение массивов и массивоподобных объектов:
Symbol.isConcatSpreadable
поможет избежать редукции в подобных случаях.сохранение своей структуры.isConcatSpreadable
может вызвать редуцирование в подобных случаях.По умолчанию, {{jsxref("Array.prototype.concat()")}} возвращает массив, объединяющий элементы исходных массивов:
var alpha = ['a', 'b', 'c'], numeric = [1, 2, 3]; var alphaNumeric = alpha.concat(numeric); console.log(alphaNumeric); // Result: ['a', 'b', 'c', 1, 2, 3]
Если значение Symbol.isConcatSpreadable
= false
, то можно отменить поведение по умолчанию:
var alpha = ['a', 'b', 'c'], numeric = [1, 2, 3]; numeric[Symbol.isConcatSpreadable] = false; var alphaNumeric = alpha.concat(numeric); console.log(alphaNumeric); // Result: ['a', 'b', 'c', [1, 2, 3] ]
Для массивоподобных объектов поведением по умолчанию будет сохранение своей структуры.
Чтобы вызвать его разложение до суммы элементов в итоговом массиве, нужно задать значение true для Symbol.isConcatSpreadable
:
var x = [1, 2, 3]; var fakeArray = { [Symbol.isConcatSpreadable]: true, length: 2, 0: 'hello', 1: 'world' } x.concat(fakeArray); // [1, 2, 3, "hello", "world"]
{{Compat}}