Ответ
Map и Set хранят сильные ссылки на ключи/значения, что может мешать сборщику мусора. WeakMap и WeakSet используют слабые ссылки, позволяя удалять объекты, если на них нет других ссылок.
Map:
- Хранит пары ключ-значение.
- Ключи могут быть любого типа.
- Поддерживает итерацию.
const map = new Map();
map.set('key', 'value');
Set:
- Хранит только уникальные значения.
- Поддерживает итерацию.
const set = new Set();
set.add(1);
WeakMap:
- Ключи только объекты.
- Не поддерживает итерацию.
- Автоматически удаляет записи при удалении ключа.
const weakMap = new WeakMap();
weakMap.set({}, 'value');
WeakSet:
- Хранит только объекты.
- Не поддерживает итерацию.
- Автоматически удаляет объекты при их удалении из памяти.
const weakSet = new WeakSet();
weakSet.add({});