--- 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 ---
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.
var p = new Proxy(cible, { enumerate(cible) { } });
Le paramètre suivant est passé à la méthode enumerate
. this
est lié au gestionnaire.
cible
La méthode enumerate
renvoie un objet itérateur.
La méthode handler.enumerate
est une trappe permettant d'intercepter les instructions {{jsxref("Instructions/for...in", "for...in")}}.
Cette trappe peut intercepter les opérations suivantes :
for (var name in proxy) {...}
Si les invariants suivants ne sont pas respectés, le proxy renverra une exception {{jsxref("TypeError")}} :
enumerate
doit renvoyer un objet.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é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). |
{{Compat("javascript.builtins.Proxy.handler.enumerate")}}