Iterator Protocol

JavaScript 🟡 Mid

Dé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.

#core#ES6#ES2025#pattern

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre