# for..of遍历对象
普通的对象是没有 iterator 接口的。
- 如果需要遍历的是类数组对象,用 Array.from 转为数组即可。
Array.from(obj);
for (var k of obj) {}
- 如果不是类数组对象,就给对象添加一个 [Symbol.iterator] 属性,指向一个迭代器即可。
obj[Symbol.iterator] = function () {
var keys = Object.keys(this);
var count = 0;
return {
next() {
if (count < keys.length) {
return {value: obj[keys[count++], done: false]}
} else {
return {value: undefined, done: true};
}
}
}
}
for (var k of obj) {}