迭代器

迭代器

是一个对象序列,也是一种接口,Iterator 接口主要供 for...of 消费,当使用 for---of 的时候,它会去寻找 Iterator 接口

默认的 Iterator 接口部署在数据结构的 Symbol.iterator 属性,Symbol.iterator 属性本身是一个函数,就是当前数据结构默认的遍历器生成函数。执行这个函数,就会返回一个遍历器。至于属性名 Symbol.iterator,它是一个表达式,返回 Symbol 对象的 iterator 属性,这是一个预定义好的、类型为 Symbol 的特殊值,所以要放在方括号内

代码实现

const aa = { a: '10', b: 20 } const myiterator = (target) = > { target[Symbol.iterator] = () = > { const temKeys = Object.keys(target) let index = 0 return { next: function () { if (index < temKeys.length) { return { done: false, value: temKeys[index++] } } else { return { done: true, value: undefined } } } } } } myiterator(aa) for (let tem of aa) { console.log(tem) }