有点害怕投票,因为这[[可能被认为是一个意见问题,但尚不清楚如何或在其他地方将此问题发布到Stack Exchange,所以我走了……我当然认为这是一个至少在这里增加价值的问题。
我最近一直在阅读Javascript的Map数据类型(不是map()数组方法)。MDN Reference
我已阅读并遵循了各种教程/文章,这些教程/文章显示了Maps,Arrays和“标准”对象之间的异同。地图的一个独特属性是您可以使用任何数据类型作为键,包括对象。这里是Tania Rascia的示例
// Create an object
const objAsKey = { foo: 'bar' }
const map = new Map()
// Set this object as the key of a Map
map.set(objAsKey, 'What will happen?')
这是控制台输出:
key: {foo: "bar"} value: "What will happen?"
我要问的是,这种可能性有什么好处?为什么我需要将对象用作键?非常感谢任何人能照到的光。
希望我不会被遗忘!
假设您有一个对象(例如DOM元素)要与某些数据相关联,但是您不想修改该对象以将数据直接添加到该对象中。因此,您可以使用以对象为键,关联数据为值的Map。通常,您需要为此使用WeakMap,以便如果原始对象消失(GCd),数据也将被释放。
但是使用地图而不是weakmap的原因是地图是可迭代的,而weakmap不是。
因此,如果您愿意付出代价,需要做更多的手工工作来管理地图条目(对于更清洁的GC),那么您就可以枚举地图的所有条目,这在某些情况下可能很有用。案例。