Rumah  >  Artikel  >  hujung hadapan web  >  Tafsiran prinsip pelaksanaan objek boleh lelar terbina dalam JS daripada perspektif kod sumber

Tafsiran prinsip pelaksanaan objek boleh lelar terbina dalam JS daripada perspektif kod sumber

WBOY
WBOYasal
2024-01-11 16:51:10988semak imbas

Tafsiran prinsip pelaksanaan objek boleh lelar terbina dalam JS daripada perspektif kod sumber

Tafsiran prinsip pelaksanaan objek boleh lela terbina dalam JS daripada perspektif kod sumber

Dalam JavaScript, banyak objek terbina dalam boleh diubah, yang bermaksud kita boleh menggunakan struktur gelung untuk merentasi elemennya. Sebagai contoh, tatasusunan, rentetan dan Peta adalah semua objek boleh lelaran. Artikel ini akan menerangkan prinsip pelaksanaan objek boleh lelar terbina dalam JavaScript daripada perspektif kod sumber dan memberikan contoh kod khusus.

Prinsip pelaksanaan objek boleh lela terbina dalam JavaScript terutamanya melibatkan dua aspek: lelaran dan protokol boleh lelar.

  1. Iterator: Iterator ialah objek yang menyediakan kaedah next() untuk melintasi elemen dalam objek boleh lelaran. Setiap kali kaedah seterusnya() dipanggil, iterator akan mengembalikan objek yang mengandungi nilai dan atribut selesai, dengan nilai mewakili nilai elemen semasa, dan selesai mewakili sama ada traversal telah tamat.

Mari kita ambil tatasusunan sebagai contoh untuk melihat cara iterator dilaksanakan:

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}

Dalam contoh di atas, kita memperoleh objek lelaran dengan memanggil kaedah Symbol.iterator bagi objek tatasusunan. Kemudian, dengan memanggil kaedah next() secara berterusan, kita boleh mengulangi elemen dalam tatasusunan. Traversal berakhir apabila atribut yang dilakukan adalah benar.

  1. Iterable Protocol: Iterable Protocol ialah spesifikasi yang menetapkan bahawa objek boleh lelar mesti mempunyai kaedah Symbol.iterator, dan kaedah mesti mengembalikan objek lelaran.

Berikut ialah contoh objek boleh lelar tersuai:

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

Dalam contoh di atas, objek myIterableObject melaksanakan kaedah Symbol.iterator dan mengembalikan objek lelaran. Kaedah next() dilaksanakan dalam objek iterator, dan setiap panggilan mengembalikan nilai semasa dan status traversal. Apabila melintasi objek myIterableObject melalui gelung for...of, objek iterator yang sepadan akan dipanggil secara automatik untuk traversal.

Malah, protokol iterator dan boleh lelar ialah corak reka bentuk dalam JavaScript dan digunakan secara meluas dalam banyak senario. Sebagai contoh, Penjana juga berdasarkan pelaksanaan iterator dan protokol boleh lelar.

Ringkasnya, prinsip pelaksanaan objek boleh lelar terbina dalam JavaScript dilaksanakan melalui lelaran dan protokol boleh lelar. Objek lelaran menyediakan kaedah seterusnya() untuk melintasi unsur-unsur dalam objek lelaran, dan protokol lelaran menetapkan bahawa objek lelaran mesti mempunyai kaedah Symbol.iterator dan mengembalikan objek lelaran. Dengan fleksibel menggunakan iterator dan protokol lelaran, kami boleh menyesuaikan objek lelaran dan mencapai lebih banyak fungsi lelaran.

Saya harap artikel ini dapat membantu anda memperoleh pemahaman yang lebih mendalam tentang prinsip pelaksanaan objek boleh lelar terbina dalam JavaScript.

Atas ialah kandungan terperinci Tafsiran prinsip pelaksanaan objek boleh lelar terbina dalam JS daripada perspektif kod sumber. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn