对于可迭代的数据解构,ES6在内部部署了一个[Symbol.iterator]属性,它是一个函数,执行后会返回iterator对象(也叫迭代器对象),而生存iterator对象[Symbol.iterator]属性叫iterator接口,有这个接口的数据结构即被视为可迭代的
数组中的Symbol.iterator方法(iterator接口)默认部署在数组原型上:
iterator迭代器是一个对象,它具有一个next方法所以可以这么调用:
(function () {
let arr = [1, 2, 3];
let iterator = arr[Symbol.iterator](); //需要使用键名的方式访问Symbol.iterator
/**
* value即每次迭代之后返回的值,而done表示是否还需要再次循环
* done为true表示循环终止
*/
console.log(iterator.next()); // {value: 1, done: false}
console.log(iterator.next()); // {value: 2, done: false}
console.log(iterator.next()); // {value: 3, done: false}
console.log(iterator.next()); // {value: undefined, done: true}
})();