Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: weakmap, garbage

Чем WeakMap отличается от Map?

Вопрос проверяет понимание слабых ссылок, сборки мусора и сценариев управления памятью.

Короткий ответ

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

Длинный ответ

Основное различие между Map и WeakMap — это влияние на управление памятью.

Определение

WeakMap — коллекция пар ключ–значение, где ключи являются объектами и не препятствуют их сборке мусора.

Ограничения WeakMap

  1. Ключи — только объекты.

  2. Нет методов:

    • keys()

    • values()

    • entries()

    • size

  3. Нельзя итерироваться.

Пример

const weakMap = new WeakMap();

let user = { name: "Ann" };
weakMap.set(user, "metadata");

user = null;
// объект может быть удалён сборщиком мусора

Почему нельзя итерироваться

  1. Объекты могут быть удалены в любой момент.

  2. JS-движок не обязан сообщать, когда именно это произойдет.

  3. Итерация нарушила бы абстракцию сборки мусора.

Когда использовать WeakMap

  1. Хранение метаданных, связанных с объектами.

  2. Кэш, который не должен приводить к утечкам памяти.

  3. Приватные данные, привязанные к экземплярам.

Типичный кейс

const privateData = new WeakMap();

function User(name) {
  privateData.set(this, { name });
}

User.prototype.getName = function () {
  return privateData.get(this).name;
};

Когда нужен Map

  1. Нужна итерация по данным.

  2. Ключи — примитивы.

  3. Важно явно управлять временем жизни данных.

Вывод

WeakMap используют для безопасной работы с памятью и объектами, а Map — для универсальных коллекций с полным доступом и итерацией.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#weakmap

#garbage

Подпишись на React Developer в телеграм