JavaScript Guidebook

JavaScript 完全知识体系

Symbol.iterator

对象的 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