WeakMap

Коллекция из пар ключ-значение, позволяющая собирать свои ключи сборщиком мусора.

Время чтения: меньше 5 мин

Это незавершённая статья. Вы можете помочь её закончить! Почитайте о том, как контрибьютить в Доку.

Кратко

Скопировано

WeakMap – коллекция из пар ключ-значение, позволяющая собирать свои ключи сборщиком мусора. Ключом WeakMap могут быть объекты или символы. Значением WeakMap может быть любой тип данных JavaScript.

Коллекция WeakMap не позволяет итерироваться по своим ключам, так как они могут быть удалены сборщиком мусора.

Ключи WeakMap хранятся как слабые ссылки, что позволяет сборщику мусора удалять их из памяти, если на них нет других ссылок. Это бывает полезно, если нужно связать какие-то данные с объектом-ключом, но не запрещать сборку мусора для этого объекта.

Пример

Скопировано
        
          
          const wm = new WeakMap();{  const ref = {};  const value = 'Булочка';  wm.set(ref, value);  wm.get(ref);  // Булочка}// Здесь сборщик мусора может удалить объект ref, несмотря на то, что он хранится в WeakMap
          const wm = new WeakMap();
{
  const ref = {};
  const value = 'Булочка';
  wm.set(ref, value);
  wm.get(ref);
  // Булочка
}

// Здесь сборщик мусора может удалить объект ref, несмотря на то, что он хранится в WeakMap