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 bekannte Symbol Symbol.isConcatSpreadable. Die Methode Array.prototype.concat() prüft dieses Symbol an jedem Objekt, das verkettet werden soll, um festzustellen, ob es wie ein array-ähnliches Objekt behandelt und zu seinen Array-Elementen abgeflacht werden sollte.

Probieren Sie es aus

Wert

Das bekannte Symbol Symbol.isConcatSpreadable.

Eigenschaften der Symbol.isConcatSpreadable-Property
Schreibbar nein
Aufzählbar nein
Konfigurierbar nein

Beschreibung

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

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

Beispiele

Arrays

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

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, kann das Standardverhalten deaktiviert werden:

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 es standardmäßig nicht zu spreaden. Symbol.isConcatSpreadable muss auf true gesetzt werden, um ein abgeflachtes 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 müssen.

Spezifikationen

Specification
ECMAScript Language Specification
# sec-symbol.isconcatspreadable

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch