Q48 [Coding]: Make a custom object iterable using Symbol.iterator.
const range = {
start: 1,
end: 3,
[Symbol.iterator]() {
let current = this.start;
let last = this.end;
return {
next() {
if (current <= last) {
return { value: current++, done: false };
}
return { value: undefined, done: true };
}
};
}
};
// Usage: for (let num of range) console.log(num); // Logs: 1, 2, 3
Key Takeaways
- Implementing
[Symbol.iterator]enablesfor...ofloops and spread syntax ([...obj]). - Iterator methods return objects conforming to
{ value, done }contracts.
Knowledge Check
Which built-in loop syntax consumes objects that implement the Symbol.iterator interface?