Map против объекта
Вопрос
Когда брать Map, а когда обычный объект?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
ключом Map может быть что угодно, у объекта - строка или Symbol
Map хранит порядок вставки и знает size
у Map нет унаследованных ключей из прототипа
Map быстрее на частых добавлениях и удалениях
объект удобнее для JSON и для фиксированной формы записи
WeakMap не держит ключ от сборщика мусора
Что могут спросить следом
- Что вернёт JSON.stringify для Map
- Зачем нужен WeakMap в реальном коде
- Как сделать частотный словарь и что взять
Разбор
Map берут, когда ключи - не строки (объекты, числа), когда состав ключей меняется
часто, когда важен порядок вставки и size. У объекта ключи приводятся к строке,
и в нём всегда есть прототипные свойства - отсюда классическая ловушка с ключом
constructor или __proto__.
Объект удобнее для данных фиксированной формы и для сериализации: JSON.stringify(map)
даст {}. WeakMap - отдельный случай: ключ-объект не удерживается от сборки мусора,
поэтому он годится для кэша, привязанного к времени жизни объекта.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.