//@target: ES6 class Foo { } class FooIterator { next() { return { value: new Foo, done: false }; } [Symbol.iterator]() { return this; } } for (let v of new FooIterator) { v; }