对象的 Symbol.iterator
属性,指向该对象的默认遍历器方法。
const myIterable = {};myIterable[Symbol.iterator] = function*() {yield 1;yield 2;yield 3;};[...myIterable]; // [1, 2, 3]
对象进行 for...of
循环时,会调用 Symbol.iterator
方法,返回该对象的默认遍历器。
class Collection {*[Symbol.iterator]() {let i = 0;while (this[i] !== undefined) {yield this[i];++i;}}}let myCollection = new Collection();myCollection[0] = 1;myCollection[1] = 2;for (let value of myCollection) {console.log(value);}// 1// 2