Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Symbol.isConcatSpreadable

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit April 2017 browserübergreifend verfügbar.

Die statische Dateneigenschaft Symbol.isConcatSpreadable repräsentiert das bekannte Symbol Symbol.isConcatSpreadable. Die Methode Array.prototype.concat() prüft dieses Symbol bei jedem zu verkettenden Objekt, um festzustellen, ob es als Array-ähnliches Objekt behandelt und seine Elemente in das Ergebnis eingefügt werden sollen.

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 bekannte Symbol Symbol.isConcatSpreadable.

Eigenschaften von Symbol.isConcatSpreadable
Schreibbarnein
Aufzählbarnein
Konfigurierbarnein

Beschreibung

Die Eigenschaft [Symbol.isConcatSpreadable] kann als eigene oder geerbte Eigenschaft definiert werden. Ihr Wert ist ein boolescher Wert. Sie kann das Verhalten von Arrays und Array-ähnlichen Objekten steuern:

  • Bei Arrays werden die Elemente standardmäßig einzeln in das Ergebnis eingefügt. Symbol.isConcatSpreadable kann dieses Verhalten verhindern.
  • Bei Array-ähnlichen Objekten werden die Elemente standardmäßig nicht einzeln eingefügt. Symbol.isConcatSpreadable kann dieses Verhalten erzwingen.

Beispiele

Arrays

Standardmäßig fügt Array.prototype.concat() die Elemente von Arrays einzeln in das Ergebnis ein:

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 Sie Symbol.isConcatSpreadable auf false setzen, können Sie dieses 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

Array-ähnliche Objekte werden standardmäßig nicht aufgelöst. Um ihre Elemente einzeln in das Ergebnis einzufügen, muss Symbol.isConcatSpreadable auf true gesetzt werden:

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 steuert, wie viele Eigenschaften des Objekts hinzugefügt werden. Im obigen Beispiel gibt length:2 an, dass zwei Eigenschaften hinzugefügt werden.

Spezifikationen

Spezifikation
ECMAScript® 2027 Language Specification
# sec-symbol.isconcatspreadable

Browser-Kompatibilität

Siehe auch