迭代协议:规定了迭代与实现的逻辑;
迭代器:具体迭代试下的逻辑;
迭代对象:可被迭代的对象 [Symbol.iterator] 方法
迭代语句:
for...of 根据迭代对象的迭代器具体实现迭代对象数据;
(for...in 以原始插入的顺序迭代对象的可枚举属性)
例子:
let obj = {
name: 'zhangsan',
age: 18,
};
// 迭代协议
obj[Symbol.iterator] = function () {
let keys = Object.keys(obj);
let n = 0;
let len = keys.length;
return {
next: function() {
if(n < len) {
return {
value: {k: keys[n], v: obj[keys[n++]]},
done: false
}
} else {
return {
done: true
}
}
}
}
}
for(var item of obj) {
console.log(item);
}