Iterator

Non-standard. La fonction Iterator est une fonctionnalité propre à ECMAScript et sera retiré dans le futur. Pour utiliser des fonctions pérennes, préférer les boucles Instructions/for...of et le protocole itérateur.

La fonction Iterator renvoie un objet implémentant le protocole itérateur historique qui permet d'itérer sur les propriétés énumérables d'un objet.

Syntaxe

Iterator(objet, [keyOnly])

Paramètres

objet
L'objet dont on souhaite itérer sur les propriétés.
keyOnly
Si keyOnly est une valeur équivalente à true, Iterator.prototype.next renverra uniquement nom_propriété.

Description

Cette fonction renvoie une instance d'Iterator qui permet d'itérer sur un objet. Pour chaque itération, l'instance renverra un tableau [nom_propriété, valeur_propriété] si keyOnly est équivalente à false. Sinon, chaque itération renverra uniquement nom_propriété. Si objet est une instance d'Iterator ou de Generator, la fonction renverra objet.

Propriétés

Iterator.prototype[@@iterator]
Renvoie une fonction qui renvoie l'objet itérateur afin de respecter les protocoles d'itération.

Méthodes

Iterator.prototype.next
Renvoie le prochain item élément au format [nom_propriété, valeur_propriété]. S'il n'y a plus d'éléments, l'exception StopIteration est levée.

Exemples

Itérer sur les propriétés d'un objet

var a = {
  x: 10,
  y: 20,
};
var iter = Iterator(a);
console.log(iter.next()); // ["x", 10]
console.log(iter.next()); // ["y", 20]
console.log(iter.next()); // renvoie StopIteration

Itérer sur les propriétés d'un objet avec l'instruction historique for...in

var a = {
  x: 10,
  y: 20,
};

for (var [nom, valeur] in Iterator(a)) {
  console.log(nom, valeur);   // x 10
                              // y 20
}

Itérer grâce à for-of

var a = {
  x: 10,
  y: 20,
};

for (var [nom, valeur] of Iterator(a)) {
  // @@iterator est utilisé
  console.log(nom, valeur);   // x 10
                              // y 20
}

Itérer sur les noms des propriétés

var a = {
  x: 10,
  y: 20,
};

for (var nom in Iterator(a, true)) {
  console.log(nom);    // x
                       // y
}

Utiliser une instance de Generator

function f() {
  yield "a";
  yield "b";
}
var g = f();

console.log(g == Iterator(g)); // true

for (var v in Iterator(g)) {
  console.log(v);   // a
                    // b
}

Utiliser une instance d'Iterator

var a = {
  x: 10,
  y: 20,
};

var i = Iterator(a);

console.log(i == Iterator(i)); // true

Spécifications

Non-standard. Ne fait partie d'aucun standard.

Compatibilité des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support simple Pas de support (Oui) 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 (Oui) Pas de support Pas de support Pas de support

Voir aussi

Étiquettes et contributeurs liés au document

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