我試圖運行與BabelJs下面的代碼空對象:`Map`返回與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
有什麼問題?
我試圖運行與BabelJs下面的代碼空對象:`Map`返回與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
有什麼問題?
什麼問題?
沒有問題。地圖根本沒有自己的枚舉屬性。如果你的問題是你爲什麼看到{}
而不是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
需要你至少一步。
完美,謝謝你 –
好的,我發現這個問題。如果您使用iojs
而不是node
,它工作得很好:
babel-node test/t.js
其結果將是:
object
Map { 'a' => 'b', 'b' => 1, 'c' => { a: 12 } }
注:iojs
安裝程序改變了node
到iojs
符號鏈接。
那麼,究竟是什麼*是問題?這個答案是什麼意思?我必須使用io.js而不是Node來使Babel工作嗎?或者爲了能夠使用地圖? –
這意味着地圖實現沒有任何可枚舉的屬性,僅此而已 – vkurchatkin
@vkurchatkin但它在Google Chrome開發者控制檯中有不同的結果 –
在Chrome中,Map是本機和控制檯支持。試試iojs 2.0.0,你會看到相同的結果 – vkurchatkin