是否可以在Object而不是Array上使用ES6 For..Of?

时间:2015-07-23 22:35:45

标签: ecmascript-6

babel-node REPL我得到

  

TypeError:undefined不是函数

尝试在对象上使用For..Of进行迭代时。我不知道为什么一个for..in可以工作,但是一个for..of won。它只适用于阵列吗?

const config = { base: 'iei', url: 'www.' }

for (let i of config) { console.log(i); }

1 个答案:

答案 0 :(得分:3)

不,for of适用于iterables。并非所有对象都是可迭代的。但是,您可以为对象创建自定义迭代器:

Object.values = function* (o) {
    for (let k of Object.keys(o))
        yield o[k];
};

for (let i of Object.values(config)) console.log(i); // 'iei', 'www.'