Работает, когда вы говорите this.MyMap.has(key)
вместо вновь созданного Объекта mapKey
. Вероятно, это связано с тем, что при создании объекта в JavaScript он сохраняется с указанным c идентификатором памяти, который отличается между объектами, и MyMap.has(...)
, вероятно, проверяет это местоположение / идентификатор памяти, а не проверяет, действительно ли объект соответствует ключу. Это та же самая причина, по которой вы не можете сравнивать объекты с простой равной операцией.
const a = { prop1: "AAA", prop2: 1 };
const b = { prop1: "AAA", prop2: 1 };
console.log(a == b); //=> false
В любом случае, я считаю, что использование объектов в качестве ключей на карте - плохая практика, но YMMV.
Чтобы решить эту проблему, вам нужно установить глобальный объект, добавить его на карту и использовать его только для проверки, есть ли на карте указанный объект в качестве ключа.