Die Skepping van 'n Itereerbare Voorwerp in JavaScript
Kom ons skep 'n ware itereerbare
voorwerp wat deur 'n for-of-lus
herhaal kan word. Om dit te doen,
moet 'n toepaslike funksie by die
voorwerp se Symbol.iterator gevoeg word.
Kom ons implementeer dit. Gestel ons het die volgende voorwerp:
let obj = {
a: 1,
b: 2,
c: 3,
};
Laat ons 'n funksie by Symbol.iterator voeg:
obj[Symbol.iterator] = function() {
}
Verander hierdie funksie in 'n generator:
obj[Symbol.iterator] = function *() {
}
Binne ons funksie sal this verwys
na die voorwerp self:
obj[Symbol.iterator] = function *() {
console.log(this); // die voorwerp self
}
Laat die iterator die voorwerp herhaal:
obj[Symbol.iterator] = function *() {
for (let key in this) {
yield obj[key];
}
}
Klaar, die voorwerp kan nou met 'n
for-of-lus herhaal word:
for (let elem of obj) {
console.log(elem); // 1, 2, 3
}
Skep 'n voorwerp wat met 'n
for-of-lus herhaal kan word.
Laat die lus-element 'n voorwerp wees
waarin die sleutel key
die sleutel van die herhaalde voorwerp bevat,
en die sleutel val die waarde bevat.
Voorbeeld:
let obj = {a: 1, b: 2, c: 3};
for (let elem of obj) {
console.log(elem);
}
Sal uitvoer:
{key: 'a', val: 1}
{key: 'b', val: 2}
{key: 'c', val: 3}