【发布时间】:2016-09-08 07:56:53
【问题描述】:
我一直在尝试掌握 ES2015 地图概念,但我不明白的一件事是:
var mapRawObj = new Map();
var rawObj = {j:"I like penguin"};
mapRawObj.set(rawObj,true);
console.log(mapRawObj.get(rawObj)); //this outputs true
mapRawObj.set({j:"I like polar bear"},true);
console.log(mapRawObj.get({j:"I like polar bear"})); //this outputs undefined
第一个有效,第二个无效,我不明白为什么?
我认为当您将对象注册为键时,它是对象本身,而不是对象的名称。这就是为什么在下面的示例中,当您重新分配键对象时,它作为键失败?
var obj = { a:"hello ", b:"world "};
var mapObj = new Map();
mapObj.set(obj,true);
obj = {d:34}; //obj is re-assigned
console.log(mapObj.get(obj)); // outputs undefined
【问题讨论】:
-
在第二个示例中,您基本上与第二个代码 sn-p 中的情况相同。因此,您要么都了解,要么都不了解。我很困惑。
标签: javascript dictionary ecmascript-6