似乎Nodejs 0.10.20中的Map已被破坏。我用--harmony(包括--harmony_collections标志)启动它 如需参考,请查看http://dailyjs.com/2012/10/15/preparing-for-esnext/ 下面的例子在Firefox 20.0中运行。
在Nodejs控制台中,我执行以下操作
> var map = new Map([[“name”,“Nicholas”],[“title”,“Author”]]);
未定义
>地图
{}
所以contsructor初始化似乎不起作用。 然后我按照Firefox的例子,他们大多不工作:
>的console.log(map.has( “名称”)); //真实 假
未定义
>的console.log(map.get( “名称”)); //“尼古拉斯”
未定义
未定义
>的console.log(map.has( “标题”)); //真实 假
未定义
>的console.log(map.get( “标题”)); //“作者”
未定义
未定义
>的console.log(map.size()); // 2
TypeError:Object#没有方法'size' 在repl:1:17
在REPLServer.self.eval(repl.js:110:21)
在repl.js:249:20
在REPLServer.self.eval(repl.js:122:7)
在界面。 (repl.js:239:12)
在Interface.EventEmitter.emit(events.js:95:17)
在Interface._onLine(readline.js:202:10)
在Interface._line(readline.js:531:8)
在Interface._ttyWrite(readline.js:760:14)
在ReadStream.onkeypress(readline.js:99:10)
我很困惑这些基本的Map方法不起作用。 我有Nodejs版本0.10.20
答案 0 :(得分:2)
它正在发挥作用。我在节点v0.10.13
上测试了它var map = new Map();
map.set("name", "Nicholas");
map.set("title", "Author");
> map.has("name");
true
> map.get("name");
'Nicholas'
> map.has("title");
true
> map.get("title");
'Author'
您正在尝试的是Mozilla特有的。它未在V8中实现。您尝试size
和使用构造函数进行数组初始化的内容在V8中不存在。我无法在V8中找到用于es-harmony实现的良好文档,这使得它很难使用。它还不是标准,因此实现方式会有所不同。
答案 1 :(得分:0)
具体来说,node.js v0.10.25 Map似乎支持以下方法:
> console.log(Object.getOwnPropertyNames(Map.prototype))
[ 'constructor', 'get', 'set', 'has', 'delete' ]
非常不幸的是,似乎没有任何方法可以迭代Map中的元素。