Symbol.iterator
时间: 2023-08-27 15:03:47 浏览: 61
Symbol.iterator 是一个内置的 JavaScript 符号(Symbol),它用于定义一个对象的默认迭代器方法。迭代器方法是一个特殊的方法,它定义了一个对象在被迭代时应该如何返回和产生值。
通过在对象上使用 Symbol.iterator,可以为该对象定义一个迭代器方法。迭代器方法必须返回一个具有 `next()` 方法的对象,该方法在每次迭代时都会返回一个包含 `value` 和 `done` 属性的对象。`value` 表示当前迭代的值,`done` 表示迭代是否已完成。
迭代器方法通常在 `for...of` 循环中使用,该循环会自动调用对象的迭代器方法来遍历对象的值。
以下是一个简单的示例,展示了如何使用 Symbol.iterator 创建一个自定义的迭代器方法:
```javascript
const myObject = {
items: ['apple', 'banana', 'orange'],
[Symbol.iterator]() {
let index = 0;
return {
next: () => {
if (index < this.items.length) {
return { value: this.items[index++], done: false };
} else {
return { value: undefined, done: true };
}
}
};
}
};
for (const item of myObject) {
console.log(item);
}
```
在这个示例中,`myObject` 对象使用了 Symbol.iterator,定义了一个迭代器方法。该迭代器方法返回一个对象,该对象包含 `next()` 方法,每次调用 `next()` 方法时都会返回一个包含当前值的对象,直到迭代完成。
运行上述示例代码,会输出 `'apple'`、`'banana'` 和 `'orange'`,分别表示每次迭代时的值。
这就是 Symbol.iterator 的基本概念和用法。希望能对你有所帮助!如果还有其他问题,请继续提问。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)