Iterator Protocol

JavaScript 🟡 Mid

Definition

Convention definissant comment un objet produit une sequence de valeurs. Un objet est iterable s'il a une methode [Symbol.iterator]() retournant un iterateur avec next() -> {value, done}.

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 custom utilisables dans for...of, spread, et destructuring.

#core#ES6#pattern