Ran*_*lue 6 javascript node.js ecmascript-6
我正在使用ECMAScript 6符号和带有--harmony标志的Node.JS v0.11.4中的映射.考虑以下.
var a = Map();
a.set(Symbol(), 'Noise');
// Prints "1"
console.log(a.size);
Run Code Online (Sandbox Code Playgroud)
'Noise'如果属性由"匿名"符号键标识,可以检索该值,保证该值是唯一的吗?
在node.js中不可能这样做,因为当前版本的v8没有实现迭代,如此错误报告中所示.
我们可以通过查看v8的collection.js的源代码来确认:
InstallFunctions($Map.prototype, DONT_ENUM, $Array(
"get", MapGet,
"set", MapSet,
"has", MapHas,
"delete", MapDelete,
"clear", MapClear
));
Run Code Online (Sandbox Code Playgroud)
但是,正如中可以看到的ECMAScript 6维基,应该也有items(),keys()和values().v8之前可能没有实现这些方法,因为它不支持生成器.但现在它从今年5月开始.在实施之前,这只是一个时间问题.
如果您现在需要具有此功能,则可以使用map-set-for-each进行polyfill forEach.您将需要对其进行修改补充case 'symbol':后case 'object':.
a.forEach(function(value, key) {
if (value === 'Noise') {
console.log('Give mak the bounty');
}
});
Run Code Online (Sandbox Code Playgroud)
当v8实现迭代时,Map你将能够找到Noise如下:
for (let [key, value] of a) {
if (value === 'Noise') {
console.log('Upvotes for future');
}
}
Run Code Online (Sandbox Code Playgroud)