为什么javascript的ES6 / Harmony Set对象为keys / values / entries方法返回空对象?

我正在尝试在节点4.1.2中的新Set对象,我看到valueskeysentries方法都始终返回空对象。 例如:

 var x = new Set x.add(1) x.add(2) x.values() // returns {} 

这是预期的行为? 我无法想象它是。

ES6增加了一些新的技巧,包括迭代协议。 您可能需要查看MDN上的迭代协议 ,以更紧密地掌握如何使用它们。 for(item in array)仍然在,但你可以使用新for ... of某些事情。

考虑到你的代码:

 var x = new Set x.add(1) x.add(2) x.values() 

让我们说,在哪里var y = x.values();y是一个迭代器;

为了遍历所说的迭代器,你可以使用for(let item of iterable){}循环。 在这种情况下,您将使用:

 for(let z of x){ console.log(z); } 

哪个会打印出来:

 1 2 

值在那里,只是util.inspect()没有显示出来。 这个问题已经在v4.1.2之后的88533881d版本中解决了。 所以,只要v4.1.3发布,你就会看到修复。