我正在使用地图
因为我想存储一个对象作为键。
我的问题是 - 我可以像访问普通对象一样访问地图吗?
例如:
let m = new Map();
let obj = {foo:'bar'};
m[obj] = 'baz';
console.log(m[obj]);
这应该按原样正常工作吗,还是我需要使用 Map 的 get/set 方法?
我问的原因是因为如果我需要使用 get/set 它会迫使我仔细重构大量代码。
这是可能需要重构的实际代码示例:
// 之前(broker.wsLock 是普通对象)
function addWsLockKey(broker, ws, key) {
let v;
if (!( v = broker.wsLock[ws])) {
v = broker.wsLock[ws] = [];
}
if (v.indexOf(key) < 0) {
v.push(key);
}
}
// 之后(broker.wsLock 是一个 Map 实例)
function addWsLockKey(broker, ws, key) {
let v;
if (!( v = broker.wsLock.get(ws))) {
v = [];
broker.wsLock.set(ws, v);
}
if (v.indexOf(key) < 0) {
v.push(key);
}
}
有没有办法将 v 设置在与 set() 调用同一行?