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 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 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:
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:
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:
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