Iterator Protocol
JavaScript 🟡 MidDéfinition
Convention par laquelle un objet produit une séquence : il est itérable s'il expose [Symbol.iterator]() retournant un itérateur dont next() renvoie {value, done}. Depuis ES2025, les itérateurs natifs héritent de la classe globale Iterator et disposent des « iterator helpers » (map, filter, take, drop, flatMap, reduce, toArray…), et Iterator.concat arrive avec ES2026.
Analogie
Un distributeur de tickets : chaque appel a next() te donne le ticket suivant, et done te dit quand il n'y en a plus.
Exemple de code
const range = {
from: 1, to: 3,
[Symbol.iterator]() {
let n = this.from;
return { next: () => n <= this.to
? { value: n++, done: false }
: { done: true } };
}
};
for (const n of range) console.log(n);
Cas d'usage
Rendre des objets maison utilisables dans for...of, spread et destructuring ; enchaîner des transformations paresseuses sans créer de tableaux intermédiaires.
Termes liés
Sources
Fiche mise à jour le 2026-09-27