关于iterator:Iterator与Generator
Iterator 概念Iterator 提供了一种对立的接口机制,为各种不同数据结构提供对立的拜访机制。定义 Iterator 就是提供一个具备 next() 办法的对象,每次调用 next() 都会返回一个后果对象,该后果对象有两个属性,value 示意以后的值,done 示意遍历是否完结。function makeIterator(Array){ let index = 0;return { next: function(){ return ( Array.length > index ? {value: Array[index++]}: {done: true} ) }}} let iterator = makeIterator(['1','2'])console.log(iterator.next()); // {value: '1'}console.log(iterator.next()); // {value: '2'}console.log(iterator.next()); // {done: true}复制代码Iterator 的作用: 为各种数据结构,提供一个对立的、简便的拜访接口;使得数据结构的成员可能按某种秩序排列;供 for...of 生产 默认 Iterator 接口ES6 提供了 for of 语句遍历迭代器对象,咱们将上述创立的迭代器应用 for of 语句遍历一下:let iterator = makeIterator(['1','2'])for (let value of iterator) { console.log(value);} // iterator is not iterable复制代码后果报错说 iterator is not iterable,这是为什么呢?ES6 规定默认的 Iterator 接口部署在数据结构的 Symbol.iterator 属性中,如果一个数据结构存在 Symbol.iterator 属性,则该数据结构可遍历。咱们将自定义的 makeIterator 革新如下:const MakeIterator = (Array) => ({ ...