由于对象不用默认的Symbol.iterator接口机制,如果想用Symbol.iterator这种方法,就需要给它部署Symbol.iterator 并且由于没有默认Symbol.iterator接口机制,无法用for...of遍历
// 声明一个对象为例
let obj = {
name : "毛毛虫",
age : 26,
};
// 给对象部署Symbol.iterator接口机制
obj[Symbol.iterator] = function () {
// 获取元素
let keys = Object.keys(obj);
// 声明一个变量,记录索引
let idx = 0 ;
// 返回next方法
return {
next : () => {
// 获取对应key
let key = keys[idx++];
// 获取对应key的值
let val = this[key];
// 判断循环完毕条件
if (idx <= keys.length){
return {value:val,done:false}
} else {
return {value:undefined,done:true}
}
}
}
};
for(o of obj){
console.log(o) // 毛毛虫 26
}