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 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
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Support simple | Pas de support | Pas de support [1] | Pas de support | Pas de support | Pas de support |
Fonctionnalité | Android | Chrome pour Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | Pas de support | Pas de support | Pas de support [1] | Pas de support | Pas de support | Pas de support |
[1] Cette fonctionnalité fut supportée entre la version 37 et la version 46 mais a été retirée afin d'être conforme à la dernière version du standard ECMAScript (cf. bug 1246318).
Voir aussi
Proxy
handler
- L'instruction
for...in
Reflect.enumerate()