Obsolète
Cette fonctionnalité est obsolète. Bien qu'encore supportée par des navigateurs, son utilisation est découragée pour tout nouveau projet. Évitez de l'utiliser.

La méthode handler.enumerate() représente une trappe pour les instructions for...in. Elle a été retirée du standard ECMAScript avec la septième édition (ES2016) et est dépréciée pour les navigateurs.

Syntaxe

var p = new Proxy(cible, {
  enumerate(cible) {
  }
});

Paramètres

Le paramètre suivant est passé à la méthode enumerate. this est lié au gestionnaire.

cible
L'objet cible.

Valeur de retour

La méthode enumerate renvoie un objet itérateur.

Description

La méthode handler.enumerate est une trappe permettant d'intercepter les instructions for...in.

Interceptions

Cette trappe peut intercepter les opérations suivantes :

  • L'énumération de propriétés / for...in : for (var name in proxy) {...}
  • Reflect.enumerate()

Invariants

Si les invariants suivants ne sont pas respectés, le proxy renverra une exception TypeError :

  • La méthode enumerate doit renvoyer un objet.

Exemples

Dans l'exemple qui suit, on intercepte l'instruction for...in.

var p = new Proxy({}, {
  enumerate(cible) {
    console.log("appelé");
    return ["a", "b", "c"][Symbol.iterator]();
  }
});

for (var x in p) { // "appelé"
  console.log(x);  // "a"
}                  // "b"
                   // "c"

Dans le code suivant, on ne respecte pas l'invariant.

var p = new Proxy({}, {
  enumerate(cible) {
    return 1;
  }
});

for (var x in p) {} // exception TypeError levée

Note : Ces deux exemples utilisent la notation raccourcie pour les définitions de méthode.

Spécifications

Spécification État Commentaires
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de '[[Enumerate]]' dans cette spécification.
Standard Définition initiale. Retirée avec ECMAScript 2016 (ES7).

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari pour iOSSamsung InternetNode.js
Support simple
ObsolèteNon-standard
Chrome Aucun support NonEdge Aucun support NonFirefox Aucun support 37 — 47IE Aucun support NonOpera Aucun support NonSafari Aucun support NonWebView Android Aucun support NonChrome Android Aucun support NonEdge Mobile Aucun support NonFirefox Android Aucun support 37 — 47Opera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android Aucun support Nonnodejs Aucun support Non

Légende

Aucun support  
Aucun support
Fonctionnalité non-standard. Celle-ci peut être incorrectement supportée par les autres navigateurs.
Fonctionnalité non-standard. Celle-ci peut être incorrectement supportée par les autres navigateurs.
Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.
Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight
Dernière mise à jour par : SphinxKnight,