obj = { a:1, b:2 } for(let k of obj){console.log(k)}
VM77:1 Uncaught TypeError: obj is not iterable at <anonymous>:1:14只有提供iterator接口的数据类型才能使用of进行遍历;如array、set、map、某些类数组像arguments等数据类型才提供了iterator接口。
解决办法:只要一个数据结构具有Symbol.iterator属性,就会被视为有iterator接口
Symbol.iterator 接口其实是一个 Generator 函数
obj = { a:1, b:2 }
obj[Symbol.iterator] = function* (){
let keys = Object.keys(obj)
for(let k of keys){
yield {
key: k,
value: this[k]
}
}
}
for(let k of obj){console.log(k)}