Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Array : propriété [Symbol.unscopables]

La propriété de données [Symbol.unscopables] de Array.prototype est partagée par toutes les instances de Array. Elle contient les noms de propriétés qui n'étaient pas inclus dans la norme ECMAScript avant la version ES2015 et qui sont ignorés lors de la liaison avec l'instruction with.

Valeur

Un objet à prototype null avec les noms de propriétés donnés ci-dessous et leurs valeurs fixées à true.

Attributs de Array : propriété [Symbol.unscopables]
ÉcrivableNon
ÉnumérableNon
ConfigurableOui

Description

Les propriétés par défaut de Array qui sont ignorées lors de la liaison avec l'instruction with sont :

Array.prototype[Symbol.unscopables] est un objet vide ne contenant que tous les noms de propriétés ci-dessus avec la valeur true. Son prototype est null, donc les propriétés de Object.prototype comme toString ne seront pas rendues involontairement non accessibles, et un appel à toString() dans une instruction with continuera d'être appelé sur le tableau.

Voir Symbol.unscopables pour savoir comment définir des propriétés non accessibles pour vos propres objets.

Exemples

Imaginez que l'appel à values.push('something') ci-dessous se trouve dans un code écrit avant ECMAScript 2015.

js
var values = [];

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

Lorsque ECMAScript 2015 a introduit la méthode Array.prototype.values(), l'instruction with dans le code ci-dessus a commencé à interpréter values comme la méthode de tableau values.values au lieu de la variable externe values. L'appel à values.push('something') échouerait car il accède maintenant à push sur la méthode values.values. Cela a provoqué un bug signalé à Firefox (Bug Firefox 883914 (angl.)).

Ainsi, la propriété de données [Symbol.unscopables] de Array.prototype fait en sorte que les propriétés de Array introduites dans ECMAScript 2015 soient ignorées lors de la liaison avec l'instruction with — permettant au code écrit avant ECMAScript 2015 de continuer à fonctionner comme prévu, plutôt que de casser.

Spécifications

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

Compatibilité des navigateurs

Voir aussi