Իտերացվող օբյեկտի ստեղծումը JavaScript-ում
Եկեք ստեղծենք իսկական իտերացվող
օբյեկտ, որը հնարավոր կլինի վերաբերել
for-of ցիկլի միջոցով: Դրա համար
օբյեկտին պետք է ավելացնել համապատասխան
ֆունկցիա Symbol.iterator-ում:
Եկեք իրականացնենք: Ենթադրենք, մենք ունենք հետևյալ օբյեկտը:
let obj = {
a: 1,
b: 2,
c: 3,
};
Ավելացնենք ֆունկցիա Symbol.iterator-ում:
obj[Symbol.iterator] = function() {
}
Փոխակերպենք այս ֆունկցիան գեներատորի.
obj[Symbol.iterator] = function *() {
}
Մեր ֆունկցիայի ներսում this-ը կուղղվի
հենց օբյեկտին.
obj[Symbol.iterator] = function *() {
console.log(this); // հենց օբյեկտը
}
Գործարկենք օբյեկտի վերաբերման գործընթացը իտերատորում.
obj[Symbol.iterator] = function *() {
for (let key in this) {
yield obj[key];
}
}
Վերջ, օբյեկտը կարելի է վերաբերել for-of
ցիկլով.
for (let elem of obj) {
console.log(elem); // 1, 2, 3
}
Ստեղծեք օբյեկտ, որը հնարավոր է վերաբերել
for-of ցիկլով: Թող ցիկլի տարր
լինի մի օբյեկտ, որի key բանալիում
կլինի վերաբերվող օբյեկտի բանալին,
իսկ val բանալիում՝ արժեքը:
Օրինակ.
let obj = {a: 1, b: 2, c: 3};
for (let elem of obj) {
console.log(elem);
}
Կարտադրի.
{key: 'a', val: 1}
{key: 'b', val: 2}
{key: 'c', val: 3}