Maison  >  Article  >  interface Web  >  Interprétation des principes d'implémentation des objets itérables intégrés de JS du point de vue du code source

Interprétation des principes d'implémentation des objets itérables intégrés de JS du point de vue du code source

WBOY
WBOYoriginal
2024-01-11 16:51:10988parcourir

Interprétation des principes dimplémentation des objets itérables intégrés de JS du point de vue du code source

Interprétation des principes d'implémentation des objets itérables intégrés de JS du point de vue du code source

En JavaScript, de nombreux objets intégrés sont itérables, ce qui signifie que nous pouvons utiliser des structures de boucle pour parcourir leurs éléments. Par exemple, les tableaux, les chaînes et les cartes sont tous des objets itérables. Cet article explique les principes d'implémentation des objets itérables intégrés de JavaScript du point de vue du code source et fournit des exemples de code spécifiques.

Le principe d'implémentation des objets itérables intégrés de JavaScript implique principalement deux aspects : les itérateurs et les protocoles itérables.

  1. Itérateur : Un itérateur est un objet qui fournit une méthode next() pour parcourir les éléments dans un objet itérable. Chaque fois que la méthode next() est appelée, l'itérateur renverra un objet contenant les attributs value et done, où value représente la valeur de l'élément actuel et done représente si le parcours est terminé.

Prenons un tableau comme exemple pour voir comment l'itérateur est implémenté :

const arr = [1, 2, 3];
const iterator = arr[Symbol.iterator]();

console.log(iterator.next()); // {value: 1, done: false}
console.log(iterator.next()); // {value: 2, done: false}
console.log(iterator.next()); // {value: 3, done: false}
console.log(iterator.next()); // {value: undefined, done: true}

Dans l'exemple ci-dessus, nous obtenons un objet itérateur en appelant la méthode Symbol.iterator de l'objet tableau. Ensuite, en appelant la méthode next() en continu, nous pouvons parcourir les éléments du tableau. Le parcours se termine lorsque l'attribut done est vrai.

  1. Iterable Protocol : Le protocole Iterable est une spécification qui stipule que les objets itérables doivent avoir une méthode Symbol.iterator et que la méthode doit renvoyer un objet itérateur.

Voici un exemple d'objet itérable personnalisé :

const myIterableObject = {
  [Symbol.iterator]() {
    let count = 1;

    return {
      next() {
        if (count <= 3) {
          return { value: count++, done: false };
        } else {
          return { value: undefined, done: true };
        }
      }
    };
  }
};

for (const item of myIterableObject) {
  console.log(item);
}
// 输出:1, 2, 3

Dans l'exemple ci-dessus, l'objet myIterableObject implémente la méthode Symbol.iterator et renvoie un objet itérateur. La méthode next() est implémentée dans l'objet itérateur et chaque appel renvoie la valeur actuelle et l'état du parcours. Lors du parcours de l'objet myIterableObject via la boucle for...of, l'objet itérateur correspondant sera automatiquement appelé pour le parcours.

En fait, les protocoles itérateurs et itérables sont un modèle de conception en JavaScript et sont largement utilisés dans de nombreux scénarios. Par exemple, les générateurs sont également basés sur des implémentations d'itérateurs et de protocoles itérables.

En résumé, le principe d'implémentation des objets itérables intégrés de JavaScript est implémenté via des itérateurs et des protocoles itérables. L'objet itérateur fournit la méthode next() pour parcourir les éléments de l'objet itérable, et le protocole itérable stipule que l'objet itérable doit avoir la méthode Symbol.iterator et renvoyer l'objet itérateur. En utilisant de manière flexible des itérateurs et des protocoles itérables, nous pouvons personnaliser les objets itérables et réaliser davantage de fonctions d'itération.

J'espère que cet article pourra vous aider à mieux comprendre les principes d'implémentation des objets itérables intégrés de JavaScript.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn