Symbol.isConcatSpreadable

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.

Die statische Dateneigenschaft Symbol.isConcatSpreadable repräsentiert das well-known Symbol Symbol.isConcatSpreadable. Die Methode Array.prototype.concat() ruft dieses Symbol für jedes zu konkatenierende Objekt ab, um zu bestimmen, ob es als array-ähnliches Objekt behandelt und in seine Array-Elemente aufgelöst (geflattet) werden soll.

Probieren Sie es aus

const alpha = ["a", "b", "c"];
const numeric = [1, 2, 3];
let alphaNumeric = alpha.concat(numeric);

console.log(alphaNumeric);
// Expected output: Array ["a", "b", "c", 1, 2, 3]

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

console.log(alphaNumeric);
// Expected output: Array ["a", "b", "c", Array [1, 2, 3]]

Wert

Das well-known Symbol Symbol.isConcatSpreadable.

Eigenschaften von Symbol.isConcatSpreadable
Schreibbarnein
Aufzählbarnein
Konfigurierbarnein

Beschreibung

Die Eigenschaft [Symbol.isConcatSpreadable] kann als eigene oder geerbte Eigenschaft definiert werden, und ihr Wert ist ein Boolean. Sie kann das Verhalten für Arrays und array-ähnliche Objekte steuern:

  • Für Array-Objekte ist das Standardverhalten, die Elemente zu spreaden (flachen). Symbol.isConcatSpreadable kann das Flachen in diesen Fällen verhindern.
  • Für array-ähnliche Objekte ist das Standardverhalten, nicht zu spreaden oder zu flatten. Symbol.isConcatSpreadable kann das Flachen in diesen Fällen erzwingen.

Beispiele

Arrays

Standardmäßig spreadet (flacht) Array.prototype.concat() Arrays in seinem Ergebnis:

js
const alpha = ["a", "b", "c"];
const numeric = [1, 2, 3];

const alphaNumeric = alpha.concat(numeric);

console.log(alphaNumeric); // Result: ['a', 'b', 'c', 1, 2, 3]

Wenn Symbol.isConcatSpreadable auf false gesetzt wird, können Sie das Standardverhalten deaktivieren:

js
const alpha = ["a", "b", "c"];
const numeric = [1, 2, 3];

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

console.log(alphaNumeric); // Result: ['a', 'b', 'c', [1, 2, 3] ]

Array-ähnliche Objekte

Für array-ähnliche Objekte ist das Standardverhalten, nicht zu spreaden. Symbol.isConcatSpreadable muss auf true gesetzt werden, um ein geflattetes Array zu erhalten:

js
const x = [1, 2, 3];

const fakeArray = {
  [Symbol.isConcatSpreadable]: true,
  length: 2,
  0: "hello",
  1: "world",
};

x.concat(fakeArray); // [1, 2, 3, "hello", "world"]

Hinweis: Die Eigenschaft length wird verwendet, um die Anzahl der hinzuzufügenden Objekteigenschaften zu steuern. Im obigen Beispiel gibt length:2 an, dass zwei Eigenschaften hinzugefügt werden sollen.

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# sec-symbol.isconcatspreadable

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
isConcatSpreadable

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch