--- title: Iterator slug: Archive/Web/Iterator tags: - JavaScript - Legacy Iterator - Reference translation_of: Archive/Web/Iterator ---
{{jsSidebar("Objects")}}
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 {{jsxref("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 {{jsxref("Les_protocoles_iteration", "les protocoles d'itération", "", 1)}}.

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 {{jsxref("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

{{CompatibilityTable}}

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support simple {{CompatNo}} {{CompatVersionUnknown}} {{CompatNo}} {{CompatNo}} {{CompatNo}}
Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support simple {{CompatNo}} {{CompatNo}} {{CompatVersionUnknown}} {{CompatNo}} {{CompatNo}} {{CompatNo}}

Voir aussi