js symbol.iterator 重置
时间: 2024-04-18 16:21:39 浏览: 14
在JavaScript中,Symbol.iterator是一个内置的符号(Symbol),它用于定义对象的默认迭代器。通过实现Symbol.iterator方法,我们可以自定义对象的迭代行为。
当一个对象被用于迭代时(例如在for...of循环中),JavaScript引擎会自动查找并调用该对象的Symbol.iterator方法。该方法应返回一个迭代器对象,该迭代器对象需要实现next()方法来控制迭代过程。
重置迭代器是指将迭代器的状态重新设置为初始状态,以便重新开始迭代。在JavaScript中,可以通过调用迭代器对象的return()方法来实现重置。return()方法会终止迭代并返回一个包含done属性为true的对象,表示迭代结束。
下面是一个示例代码,演示了如何使用Symbol.iterator和重置迭代器:
```javascript
const myObject = {
data: [1, 2, 3, 4, 5],
[Symbol.iterator]() {
let index = 0;
return {
next: () => {
if (index < this.data.length) {
return { value: this.data[index++], done: false };
} else {
return { done: true };
}
},
return: () => {
index = 0; // 重置索引
return { done: true };
}
};
}
};
// 使用for...of循环迭代对象
for (const item of myObject) {
console.log(item);
if (item === 3) {
break; // 在迭代到3时终止循环
}
}
// 重置迭代器
const iterator = myObject[Symbol.iterator]();
iterator.return();
// 再次使用for...of循环迭代对象
for (const item of myObject) {
console.log(item);
}
```