遍历器想必大家都知道,今天自己实现了一个简单的遍历器,欢迎大家一起交流探讨。
基本实现
const obj = {0: 'a', 1: 'b',2: 'c', length:3};
obj[Symbol.iterator] = function () {
let index = 0;
return {
next: () => {
return {
value: this[index],
done: index++ === this.length
}
}
}
}
console.log([...obj]) // ['a', 'b', 'c']
观察上边的代码我们发现, 遍历器最终返回的是一个包含next方法的对象,并且next方法返回一个包含 value和done的对象。有没有觉得和generator函数很像。那接下来我们就用generator函数把刚才的遍历器重新实现一遍。
通过generator函数实现
const obj = {0: 'a', 1: 'b',2: 'c', length:3};
obj[Symbol.iterator] = function * () {
let index = 0;
while( index !== this.length) {
yield this[index++]
}
}
console.log([...obj]) // ['a', 'b', 'c']
有没有发现使用generator函数更简单了。
本文介绍了如何使用Generator函数来实现一个简单的遍历器,对比传统的手动实现方式,Generator函数让代码更加简洁。作者通过两个实例展示了两种实现方式,并输出了相同的结果,强调了Generator在处理迭代过程中的便利性。
352

被折叠的 条评论
为什么被折叠?



