Custom object iterators
JavaScript metaprogramming to make an object iterable
by chortlehoort
HTML
<article id="dwarves">
</article>
JavaScript
const se7enDwarves = {
employment: "Miners",
output: "Diamonds",
members: new Map()
}
se7enDwarves.members.set(1, "Sleepy")
se7enDwarves.members.set(2, "Grumpy")
se7enDwarves.members.set(3, "Happy")
se7enDwarves.members.set(4, "Bashful")
se7enDwarves.members.set(5, "Sneezy")
se7enDwarves.members.set(6, "Doc")
se7enDwarves.members.set(7, "Dopey")
se7enDwarves[Symbol.iterator] = function* () {
const states = se7enDwarves.members.values()
let state = null
do {
state = states.next().value
if (typeof state !== "undefined") yield state
} while (typeof state !== "undefined")
}
document.querySelector("#dwarves").textContent = [...se7enDwarves]