การสร้างวัตถุที่สามารถวนซ้ำได้ใน 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}