数组和字符串的迭代器iterator
const arr = [1, 2, 3, 4]; const str = "hello"; function myIterator(arr) { let index = 0; return { next() { if (index < arr.length) { return { value: arr[index++], done: false, }; } return { value: undefined, done: true }; }, }; } let iter = myIterator(arr); console.log(iter.next()); // {value: 1, done: false} console.log(iter.next()); // {value: 2, done: false} console.log(iter.next()); // {value: 3, done: false} console.log(iter.next()); // {value: 4, done: false} console.log(iter.next()); // {value: undefined, done: true} let iter1 = myIterator(str); console.log(iter1.next()); // {value: 'h', done: false} console.log(iter1.next()); // {value: 'e', done: false} console.log(iter1.next()); // {value: 'l', done: false} console.log(iter1.next()); // {value: 'l', done: false} console.log(iter1.next()); // {value: 'o', done: false} console.log(iter1.next()); // {value: undefined, done: true}