在进入javascript地图之前使用_c

dan*_*ely 1 javascript javascript-objects ecmascript-6

说我有一张地图

let map = new Map();
let newMap = {...map};
Run Code Online (Sandbox Code Playgroud)

newMap.get(key) 不适合我,我必须这样做 newMap._c.get(key)

有没有人遇到过这个问题?

log*_*yth 6

{...foo}是一个传播对象.它将复制对象中的所有可枚举属性,就像这样做Object.assign({}, foo).

问题是a Map的键/值对不是属性,它们存储在map中的不透明数据结构中....无法复制地图,因为它不访问地图数据.您看到的原因_c是因为这是您的Map polyfill用于实现私有内部数据结构的私有数据结构.

要复制Map,您可以使用Map构造函数,它以iterable作为参数,并且由于Map实例是可迭代的,您可以简单地执行

var newMap = new Map(map);
Run Code Online (Sandbox Code Playgroud)