ECMAScript 6のシンボルとマップをNode.JS v0.11.4の--harmony
フラグで再生しています。以下を考慮する。リカバリプロパティのキー/値
var a = Map();
a.set(Symbol(), 'Noise');
// Prints "1"
console.log(a.size);
値は、プロパティが一意であることが保証されている「匿名」の記号キーによって識別される与え取り出すこと'Noise'
できますか?
ECMAScript 6のシンボルとマップをNode.JS v0.11.4の--harmony
フラグで再生しています。以下を考慮する。リカバリプロパティのキー/値
var a = Map();
a.set(Symbol(), 'Noise');
// Prints "1"
console.log(a.size);
値は、プロパティが一意であることが保証されている「匿名」の記号キーによって識別される与え取り出すこと'Noise'
できますか?
v12の現在のバージョンでは、このbug reportのように反復処理が実装されていないため、node.jsで実行することはできません。私たちは、V8のcollection.jsのソースコードを見ることであることを確認することができ
:ECMAScript 6 wikiに見られるように、
InstallFunctions($Map.prototype, DONT_ENUM, $Array(
"get", MapGet,
"set", MapSet,
"has", MapHas,
"delete", MapDelete,
"clear", MapClear
));
しかし、またitems()
、keys()
、およびvalues()
があるはずです。 v8はジェネレータをサポートしていなかったため、おそらくこれまでこれらのメソッドを実装していませんでした。でも、今年の5月よりit doesになりました。これが実現されるまでは時間の問題でなければなりません。
ここでこの機能を使用する必要がある場合は、のmap-set-for-eachを使用できます。 case 'object':
の後にcase 'symbol':
を追加するように変更する必要があります。
a.forEach(function(value, key) {
if (value === 'Noise') {
console.log('Give mak the bounty');
}
});
V8はMap
の反復を実装するときは、このようなNoise
を見つけることができるようになります:
for (let [key, value] of a) {
if (value === 'Noise') {
console.log('Upvotes for future');
}
}
私が漏れについて知らないが、あなたはせずに戻って値を取得することはできませんSymbol()returnを参照してください。 – dandavis
ES 6のシンボルがどのように動作するのかわかりませんが、オブジェクトを列挙できませんか? 'for(var key in a)警告([key]);' – jods