Array.prototype[Symbol.unscopables]

Die [Symbol.unscopables] Dateneigenschaft von Array.prototype wird von allen Array Instanzen geteilt. Sie enthält Eigenschaftsnamen, die vor der ES2015-Version nicht in den ECMAScript-Standard aufgenommen wurden und die für Bindungszwecke von with Anweisungen ignoriert werden.

Wert

Ein Objekt mit null-Prototyp mit den unten angegebenen Eigenschaftsnamen und deren Werten, die auf true gesetzt sind.

Eigenschaften von Array.prototype[Symbol.unscopables]
Schreibbarnein
Aufzählbarnein
Konfigurierbarja

Beschreibung

Die Standard-Array-Eigenschaften, die für Bindungszwecke von with Anweisung ignoriert werden, sind:

Array.prototype[Symbol.unscopables] ist ein leeres Objekt, das nur alle oben genannten Eigenschaftsnamen mit dem Wert true enthält. Sein Prototyp ist null, sodass Object.prototype Eigenschaften, wie toString, nicht versehentlich unscopable gemacht werden und ein toString() innerhalb der with Anweisung weiterhin auf das Array aufgerufen wird.

Siehe Symbol.unscopables, um unscopable Eigenschaften für Ihre eigenen Objekte zu setzen.

Beispiele

Stellen Sie sich vor, der Aufruf values.push('something') unten befindet sich in einem Code, der vor ECMAScript 2015 geschrieben wurde.

js
var values = [];

with (values) {
  values.push("something");
}

Als ECMAScript 2015 die Array.prototype.values() Methode einführte, begann die with Anweisung im obigen Code values als die values.values Array-Methode zu interpretieren, anstatt die externe Variable values. Der Aufruf values.push('something') würde fehlschlagen, da jetzt auf push auf der values.values Methode zugegriffen wird. Dies führte dazu, dass ein Fehler bei Firefox gemeldet wurde (Firefox Bug 883914).

Die [Symbol.unscopables] Dateneigenschaft für Array.prototype bewirkt, dass die ab ECMAScript 2015 eingeführten Array-Eigenschaften für Bindungszwecke der with Anweisung ignoriert werden — wodurch Code, der vor ECMAScript 2015 geschrieben wurde, weiterhin wie erwartet funktioniert und nicht fehlschlägt.

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# sec-array.prototype-%symbol.unscopables%

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
[Symbol.unscopables]

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch