恢复属性键/值
我正在使用–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'); } }