# for..of遍历对象

普通的对象是没有 iterator 接口的。

  1. 如果需要遍历的是类数组对象,用 Array.from 转为数组即可。
Array.from(obj);
for (var k of obj) {}

  1. 如果不是类数组对象,就给对象添加一个 [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) {}