--- title: handler.enumerate() slug: Archive/Web/JavaScript/handler.enumerate tags: - ECMAScript 2015 - JavaScript - Méthode - Obsolete - Proxy - Reference translation_of: Archive/Web/JavaScript/handler.enumerate ---
{{JSRef}} {{obsolete_header}}

La méthode handler.enumerate() représente une trappe pour les instructions {{jsxref("Instructions/for...in", "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 {{jsxref("Instructions/for...in", "for...in")}}.

Interceptions

Cette trappe peut intercepter les opérations suivantes :

Invariants

Si les invariants suivants ne sont pas respectés, le proxy renverra une exception {{jsxref("TypeError")}} :

Exemples

Dans l'exemple qui suit, on intercepte l'instruction {{jsxref("Instructions/for...in", "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
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-enumerate', '[[Enumerate]]')}} {{Spec2('ES2015')}} Définition initiale. Retirée avec ECMAScript 2016 (ES7).

Compatibilité des navigateurs

{{Compat("javascript.builtins.Proxy.handler.enumerate")}}

Voir aussi