const range = { from: 1, to: 3, [Symbol.iterator]() { let cur = this.from, end = this.to; return { next: () => cur <= end ? { value: cur++, done: false } : { value: undefined, done: true } }; } }; console.log([...range]);