Разница между объектами Map и WeakMap в JavaScript заключается в том, как они управляют памятью. 2
Map — это коллекция пар ключ-значение, где ключ и значение могут быть любого типа. 12 Пока существует объект Map, его ключи и значения не будут собраны сборщиком мусора. 2
WeakMap — это коллекция пар ключ-значение, где ключи должны быть объектами или незарегистрированными символами, а значения — любого произвольного типа JavaScript. 4 На ключи в WeakMap создаются слабые ссылки, то есть присутствие объекта в качестве ключа в WeakMap не предотвращает сборку мусора. 45 Если единственная ссылка на ключ — из объекта WeakMap, ключ будет автоматически собран сборщиком мусора. 2
Таким образом, WeakMap полезен в случаях, когда нужно связать дополнительные данные с объектом без сохранения сильной ссылки на этот объект. 2 Например, когда основное место для хранения и использования объектов находится в другом месте кода, а здесь нужно хранить для них «вспомогательные» данные, существующие лишь пока жив объект. 3