ES6规定,默认的`Iterator`接口部署在数据结构的`Symbol.iterator`属性,换个角度,也可以认为,一个数据结构只要具有`Symbol.iterator`属性(`Symbol.iterator`方法对应的是遍历器生成函数,返回的是一个遍历器对象),那么就可以其认为是可迭代的。
可迭代对象的特点
- 具有Symbol.iterator属性,Symbol.iterator()返回的是一个遍历器对象
- 可以使用for ... of进行循环
- 通过被Array.from转换为数组
let array = [1,2,3,4];
let iter = arry[Symbol.iterator]();
console.log(iter.next());//{value:1, done:false}
console.log(iter.next());//{value:2, done:false}
console.log(iter.next());//{value:3,done:false}
原生具有Iterator接口的数据结构:
- Array
- Map
- Set
- String
- TypedArray
- 函数的arguments对象
- NodeList对象