迭代協議:規定了迭代與實現的邏輯;
迭代器:具體迭代試下的邏輯;
迭代對象:可被迭代的對象 [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);
}