JavaScript-de iterirlenýän obýekti döretmek
Geliň, hakyky iterirlenýän obýekdi döretmek
bilen, ony for-of aýlawy bilen geçip bolýar.
Munun üçin obýekde degişli funksiýa
Symbol.iterator goşulmaly.
Geliň amala aşyralyň. Bizde aşakdaky obýekt bar diýeliň:
let obj = {
a: 1,
b: 2,
c: 3,
};
Symbol.iterator funksiýasyny goşalyň:
obj[Symbol.iterator] = function() {
}
Bu funksiýany generatora öwüreliň:
obj[Symbol.iterator] = function *() {
}
Bizim funksiýamyzyň içinde this görkezijisi
obýektin özüne gözegçilik eder:
obj[Symbol.iterator] = function *() {
console.log(this); // obýektin özi
}
Iteratorda obýekti geçmek işini başlatalyň:
obj[Symbol.iterator] = function *() {
for (let key in this) {
yield obj[key];
}
}
Häzir, obýekdi for-of aýlawy bilen
geçip bolýar:
for (let elem of obj) {
console.log(elem); // 1, 2, 3
}
for-of aýlawy bilen geçip bolýan obýekdi düzüň.
Aýlaw elementine obýekt düşsin, onuň key açarynda
geçilýän obýekdiň açary, val açarynda bolsa
gymmaty bolsun. Mysal:
let obj = {a: 1, b: 2, c: 3};
for (let elem of obj) {
console.log(elem);
}
Çap eder:
{key: 'a', val: 1}
{key: 'b', val: 2}
{key: 'c', val: 3}