//ES5手写生成器(基于闭包)
const obj = {
a: 1,
b: 2,
c: 3,
iterator: function () {
let index = null;
const keys = Object.keys(this);
return {
next() {
if (index < keys.length) {
return { done: false, value: keys[index++] };
} else return { done: true: value:undefined };
},
};
},
};
//获取可迭代对象无法被for of消费,如果需要提供 for of 消费,需要将iterator更换[Symbol.iterator]
const objIterator = obj.iterator();
//对可迭代对象迭代
console.log(objIterator.next()); //{done:false,value:'a'}
console.log(objIterator.next()); //{done:false,value:'b'}
console.log(objIterator.next()); //{done:false,value:'c'}
console.log(objIterator.next()); //{done:false,value:undefined}
手动实现迭代器功能
最新推荐文章于 2024-10-05 01:22:45 发布