恢复属性键/值

我正在使用–harmony标志在Node.JS v0.11.4中使用ECMAScript 6符号和地图。 考虑以下。

 var a = Map(); a.set(Symbol(), 'Noise'); // Prints "1" console.log(a.size); 

如果属性由“匿名”符号键标识,那么是否可以检索'Noise'值?

在node.js中不可能这样做,因为当前版本的v8没有实现如本bug报告中所示的迭代。

我们可以通过查看v8的collection.js的源代码来确认:

 InstallFunctions($Map.prototype, DONT_ENUM, $Array( "get", MapGet, "set", MapSet, "has", MapHas, "delete", MapDelete, "clear", MapClear )); 

但是,从ECMAScript 6 wiki中可以看出,还应该有items()keys()values() 。 v8之前可能没有实现这些方法,因为它不支持生成器。 但是今年5月以后呢 。 在实施之前,应该只是一个时间问题。

如果你现在需要这个function,你可以使用map-set-for-each来填充forEach 。 您将需要修改它以添加case 'symbol': case 'object':

 a.forEach(function(value, key) { if (value === 'Noise') { console.log('Give mak the bounty'); } }); 

当v8实现Map迭代时,你将能够像这样findNoise

 for (let [key, value] of a) { if (value === 'Noise') { console.log('Upvotes for future'); } }