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 April 2017.
Die statische Dateneigenschaft Symbol.isConcatSpreadable repräsentiert das wohlbekannte Symbol Symbol.isConcatSpreadable. Die Methode Array.prototype.concat() prüft dieses Symbol bei jedem zu konkatinierenden Objekt, um festzustellen, ob es wie ein arrayähnliches Objekt behandelt und auf seine Array-Elemente abgeflacht 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 wohlbekannte 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 (abzuflachen).
Symbol.isConcatSpreadablekann das Abflachen in diesen Fällen vermeiden. - Für arrayähnliche Objekte ist das Standardverhalten, nicht zu spreaden oder abzuflachen.
Symbol.isConcatSpreadablekann in diesen Fällen das Abflachen erzwingen.
Beispiele
>Arrays
Standardmäßig spreadet Array.prototype.concat() Arrays in sein 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]
Indem 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 abgeflachtes 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 müssen.
Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-symbol.isconcatspreadable> |
Browser-Kompatibilität
Loading…