Rumah >hujung hadapan web >tutorial js >Fahami apa itu lelaran JavaScript dalam sepuluh minit
Artikel ini membawakan anda pengetahuan yang berkaitan tentang iterator dalam JavaScript Mari kita lihat apa itu iterator dan cara menyesuaikannya.
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);}
Jadi bagaimana kita melaksanakan penyalur?
Pertama sekali, ia perlu memenuhi dua perkara:
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 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
.
Kemudian kami mula menyesuaikan iterator
Seperti yang dinyatakan di atas, jika anda ingin menyesuaikan iterator Iterator perlu memenuhi dua syarat berikut:
Symbol.iterator
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);}
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!