Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: weakmap, структуры данных

WeakMap. В чем особенность? Какие свойства и методы есть? Как перебрать?

Этот вопрос проверяет знание структуры данных WeakMap в JavaScript, ее особенностей, свойств и методов, а также подходов к перебору элементов.

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

WeakMap — это коллекция пар ключ-значение, где ключи могут быть только объектами, а значения могут быть любого типа. Главная особенность WeakMap заключается в том, что он не удерживает сильные ссылки на ключи, что позволяет сборщику мусора автоматически очищать элементы, если на них больше нет ссылок. У WeakMap есть методы set(), get(), has() и delete(), однако его нельзя перебрать с помощью обычных методов, так как WeakMap не предоставляет итераторов.

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

WeakMap — это специальная структура данных в JavaScript, предназначенная для хранения пар ключ-значение, где ключи могут быть только объектами, а значения могут быть любого типа. Особенности WeakMap включают:

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

Методы WeakMap:

  • set(key, value): Добавляет или обновляет значение по указанному ключу.

  • get(key): Возвращает значение по указанному ключу.

  • has(key): Проверяет, существует ли указанный ключ.

  • delete(key): Удаляет элемент по указанному ключу.

Отсутствие итераторов: К сожалению, WeakMap не предоставляет методов для перебора элементов, таких как forEach(), keys(), values() или entries(). Это связано с тем, что WeakMap может содержать только слабые ссылки, и не гарантирует, что все ключи будут доступны для итерации в любой момент времени.

Таким образом, WeakMap идеально подходит для случаев, когда вам нужно хранить временные данные, связанные с объектами, не влияя на их жизненный цикл. Например, вы можете использовать WeakMap для хранения кэшированных данных, связанных с элементами DOM, что позволяет предотвратить утечки памяти.

Уровень

  • Рейтинг:

    5

  • Сложность:

    8

Навыки

  • JavaScript

    JavaScript

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

#weakmap

#структуры данных

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