Rumah  >  Artikel  >  hujung hadapan web  >  Fahami apa itu lelaran JavaScript dalam sepuluh minit

Fahami apa itu lelaran JavaScript dalam sepuluh minit

WBOY
WBOYke hadapan
2021-12-22 18:20:234024semak imbas

Artikel ini membawakan anda pengetahuan yang berkaitan tentang iterator dalam JavaScript Mari kita lihat apa itu iterator dan cara menyesuaikannya.

Fahami apa itu lelaran JavaScript dalam sepuluh minit

1.

  • Iterator ialah mekanisme antara muka yang menyediakan mekanisme capaian bersatu untuk pelbagai struktur data. (Iaitu, untuk membuat beberapa struktur data yang tidak menyokong traversal boleh dilalui)

Yang paling biasa ialah Array iterator, yang mengembalikan nilai dalam tatasusunan mengikut tertib.

let arr = [1,2,3,4,5];for (let val of arr) {
    console.log(val);}

Fahami apa itu lelaran JavaScript dalam sepuluh minit


2. Penyalur tersuai

Jadi bagaimana kita melaksanakan penyalur?

Pertama sekali, ia perlu memenuhi dua perkara:

  • Protokol boleh berulang
  • Protokol Iterator

Protokol boleh lelaran

Protokol boleh lelaran membenarkan objek JavaScript mentakrifkan atau menyesuaikan tingkah laku lelarannya

Bagaimana untuk memenuhi protokol boleh lelaran?

Untuk menjadi objek boleh lelar, objek mesti melaksanakan kaedah @@iterator.
Ini bermakna objek (atau beberapa objek pada rantai prototaipnya) mesti mempunyai sifat dengan kekunci @@iterator, yang boleh diakses melalui Symbol.iterator tetap

Iaitu Untuk memuaskan protokol iterable, objek anda perlu mempunyai sifat dengan kekunci bernama Symbol.iterator, menjadikannya objek boleh lelaran.

Protokol Iterator

Protokol iterator mentakrifkan cara standard untuk menghasilkan jujukan nilai, sama ada terhingga atau tak terhingga.
Apabila terdapat bilangan nilai yang terhad, nilai pulangan lalai akan dikembalikan selepas semua nilai telah diulang.

Bagaimana untuk memenuhi protokol lelaran?

Objek anda perlu melaksanakan sekurang-kurangnya satu kaedah next(), yang mengembalikan objek lelaran IteratorResult. Objek iterator ini mengandungi dua sifat done dan ·value.

  • selesai:
    Palsu jika iterator boleh menghasilkan nilai seterusnya dalam jujukan.
    benar jika iterator telah selesai mengulang jujukan
  • nilai
    Nilai yang dikembalikan oleh iterator. Apabila dilakukan adalah benar, ia boleh ditinggalkan

Kemudian kami mula menyesuaikan iterator

Seperti yang dinyatakan di atas, jika anda ingin menyesuaikan iterator Iterator perlu memenuhi dua syarat berikut:

  • menjadi objek lelaran, iaitu, ia mempunyai atribut Symbol.iterator
    (iaitu, protokol lelaran: Symbol.iterator)
  • Objek iterator mengembalikan kaedah next(), yang mengembalikan objek next() yang mengandungi sifat value dan done (iaitu protokol iterator: return { next() { return { value, done } } )
let colors = {
    blue : "蓝色",
    green : "绿色",
    yellow : "黄色"}
warna kini merupakan objek yang tidak boleh diulang.

Seterusnya, mula melaksanakan:

colors[Symbol.iterator] = function() {
	let keys = Object.keys(colors);
	// 如果用 let keys = Reflect.ownKeys(colors),keys 就会包括一些不可枚举的属性
	// 那么后面的 len 要减一,减去Symbol.iterator这个属性
	// 根据实际情况选择使用
	let len = keys.length;
	let index = 0;
	
	return {
	    next : function() {
	        if (index < len) {
	            return {
	                value : colors[keys[index++]],
	                done : false
	            }
	        }
	        return { done : true }
	    }
	}}
Biar kami mengesahkannya:

for (let val of colors) {
    console.log(val);}

Fahami apa itu lelaran JavaScript dalam sepuluh minit

[Cadangan berkaitan:

tutorial pembelajaran javascript]

Atas ialah kandungan terperinci Fahami apa itu lelaran JavaScript dalam sepuluh minit. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam