Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. Référence JavaScript
  4. Objets natifs standards
  5. Symbol
  6. Symbol.unscopables

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 EnglishAlways switch to English

Symbol.unscopables

Le symbole connuSymbol.unscopables est utilisé afin de définir les noms des propriétés propres et héritées qui sont exclues de l'objet lors de l'utilisation dewith sur l'objet en question.

Exemple interactif

const object1 = {  property1: 42,};object1[Symbol.unscopables] = {  property1: true,};with (object1) {  console.log(property1);  // Expected output: Error: property1 is not defined}

Description

Le symbole@@unscopables (Symbol.unscopables) peut être défini sur n'importe quel objet afin de ne pas exposer certaines propriétés lors des liaisons lexicales avecwith. Note : en mode strict, l'instructionwith n'est pas disponible et ce symbole est donc probablement moins nécessaire.

En définissant une propriété commetrue dans un objetunscopables, cela exclura la propriété de la portée lexicale. En définissant une propriété commefalse, celle-ci pourra faire partie de la portée lexicale et être manipulée dans un blocwith.

Attributs deSymbol.unscopables
ÉcrivableNon
ÉnumérableNon
ConfigurableNon

Exemples

Le code qui suit fonctionne bien pour ES5 et les versions antérieures. En revanche, pour ECMAScript 2015 (ES6) et les versions ultérieures où la méthodeArray.prototype.keys() existe, lorsqu'on utilise un environnement créé avecwith,"keys" serait désormais la méthode et non la variable. C'est là que le symbole natif@@unscopablesArray.prototype[@@unscopables] intervient et empêche d'explorer ces méthodes avecwith.

js
var keys = [];with (Array.prototype) {  keys.push("something");}Object.keys(Array.prototype[Symbol.unscopables]);// ["copyWithin", "entries", "fill", "find", "findIndex",//  "includes", "keys", "values"]

On peut également manipulerunscopables sur ses propres objets :

js
var obj = {  toto: 1,  truc: 2,};obj[Symbol.unscopables] = {  toto: false,  truc: true,};with (obj) {  console.log(toto); // 1  console.log(truc); // ReferenceError: truc is not defined}

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-symbol.unscopables

Compatibilité des navigateurs

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2025 Movatter.jp