Fahami apa itu lelaran JavaScript dalam sepuluh minit

WBOY
Lepaskan: 2021-12-22 18:20:23
ke hadapan
4036 orang telah melayarinya

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);}
Salin selepas log masuk

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 : "黄色"}
Salin selepas log masuk
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 }
	    }
	}}
Salin selepas log masuk
Biar kami mengesahkannya:

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

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!

Label berkaitan:
sumber:csdn.net
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan