我一直试图掌握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
Run Code Online (Sandbox Code Playgroud)
第一个工作,第二个不工作,我不明白为什么?
我认为当你将对象注册为键时,它就是对象本身,而不是对象的名称.这就是为什么在下面的例子中,当您重新分配密钥对象时,它会失败作为密钥?
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
Run Code Online (Sandbox Code Playgroud)