我试图使用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);
但是我从object
得到一个空的babel-node
:
{}
object
问题是什么?
答案 0 :(得分:2)
问题是什么?
没有问题。地图根本没有自己的可枚举属性。如果您的问题是为什么您会看到{}
而非Map {....}
,那是因为您的环境尚未支持Map
,因此核心js(这是Babel使用的那些)填充它们。
无法(afaik)覆盖console.log
显示值的方式,因此您只能看到一个空对象。根据浏览器供应商认为有用的内容,控制台只显示值的某些表示。
为了让我的观点更加清晰,让我们看一下console.log(document.body)
:
> console.log(document.body)
<body class="...">…</body>
这是否意味着document.body
是一个包含HTML的字符串?当然不是。 document.body
是一个DOM元素。控制台只是呈现其HTML表示形式,因为有人认为这比仅仅转储DOM元素的所有属性更有帮助。
如果您真的想要查看对象的所有属性,console.dir
至少会向您迈进一步。
答案 1 :(得分:0)
好的,我发现了问题。如果您使用iojs
代替node
,则效果很好:
babel-node test/t.js
结果将是:
object
Map { 'a' => 'b', 'b' => 1, 'c' => { a: 12 } }
注意: iojs
安置程序将node
的符号链接更改为iojs
。