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 | |
---|---|
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 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:
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:
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:
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 GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
isConcatSpreadable |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support