`Map` returns 带有 BabelJS 的空对象
`Map` returns empty object with BabelJS
我正在尝试 运行 使用 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
得到一个空的 object
作为结果:
{}
object
有什么问题吗?
好的,我找到问题了。如果你使用 iojs
而不是 node
,效果很好:
babel-node test/t.js
结果将是:
object
Map { 'a' => 'b', 'b' => 1, 'c' => { a: 12 } }
注意: iojs
安装程序将 node
的符号链接更改为 iojs
。
What's the problem?
没有问题。地图根本没有自己的可枚举属性。如果你的问题是为什么你看到 {}
而不是 Map {....}
,那是因为你的环境还不支持 Map
s,因此 core-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
至少能让您更接近这一点。
我正在尝试 运行 使用 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
得到一个空的 object
作为结果:
{}
object
有什么问题吗?
好的,我找到问题了。如果你使用 iojs
而不是 node
,效果很好:
babel-node test/t.js
结果将是:
object
Map { 'a' => 'b', 'b' => 1, 'c' => { a: 12 } }
注意: iojs
安装程序将 node
的符号链接更改为 iojs
。
What's the problem?
没有问题。地图根本没有自己的可枚举属性。如果你的问题是为什么你看到 {}
而不是 Map {....}
,那是因为你的环境还不支持 Map
s,因此 core-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
至少能让您更接近这一点。