迭代器
迭代: 意味着,按照顺序访问元素
常见可迭代
string. map,set,Array,arguments 可迭代:
- 可以通过for of 来进行迭代
- 扩展运算,解构等
条件
- 只有具备 Symbo.iterator 迭代器,返回对象,特征为,具备next vakue,done等结构
核心
- 对象具备一个迭代器: 一个对象,包含next 方法,并返回,next 执行,获取下一个值,done 代表是否迭代完毕
function toIteRator(obj) {
return {
...obj,
[Symbol.iterator]() {
let index = 0;
// 目前是对象在调用这个迭代器,所以this 就指向了这个对象
const Objects = Object.keys(this);
return {
next() {
if (index < Object.keys(obj).length) {
return { value: this[Objects[index++]], done: false };
} else {
return { done: true };
}
}
}
},
};
}