我试图使用BabelJs运行以下代码:
var m = new Map();
m.set('a', 'b');
m.set('b', 1);
m.set('c', { a: 12 });
console.log(m);
console.log(typeof m);但是我从babel-node那里得到了一个空的babel-node:
{}
object有什么问题吗?
发布于 2015-05-14 15:33:16
有什么问题吗?
没有问题。映射根本没有自己的可枚举属性。如果您的问题是为什么要看到{}而不是Map {....},那是因为您的环境还没有对Map的支持,因此核心js( Babel所使用的)填充了它们。
不可能(afaik)覆盖console.log应该如何显示值,因此您只看到一个空对象。控制台只显示值的一些表示形式,根据浏览器供应商认为有用的内容。
为了使我的观点更清楚,让我们看看您从console.log(document.body)得到了什么
> console.log(document.body)
<body class="...">…</body>这是否意味着document.body是一个包含的字符串?当然不是。document.body是一个DOM元素。控制台只是呈现它的HTML表示,因为有人认为这比转储DOM元素的所有属性更有帮助。
如果您真的想看到一个对象的所有属性,console.dir至少会让您更接近这一点。
发布于 2015-05-14 11:25:45
好的,我发现了问题。如果您使用iojs而不是node,它会运行得很好:
babel-node test/t.js其结果将是:
object
Map { 'a' => 'b', 'b' => 1, 'c' => { a: 12 } }注意: iojs安装程序将node的符号链接更改为iojs。
https://stackoverflow.com/questions/30235874
复制相似问题