Задать вопрос
@Boris009

Как Map запоминает адрес ключа, который является объектом?

При добавлении в Map ключа в виде объекта, как карта его запоминает?
Пример
Я создал переменную obj = {...}
Сделал Map.set(obj, '...')
После изменил obj = 'string'
Как в Map запомнился этот ключ в виде объекта и как я могу обратится к Map через Map.get, чтобы получить значение ключа, который был объектом в переменной obj, но после я переменную перезаписал?

И почему нам Map.values() и Map.keys() возвращает пустой итерируемый объект?
Для чего это?
Нам всё равно потом приходится преобразовывать его в массив, чтобы получить данные и с ними уже что-то делать
Так почему сразу не сделали вывод массива с данными?
  • Вопрос задан
  • 142 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 3
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
Как Map запоминает адрес ключа, который является объектом?

По ссылке
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
И почему нам Map.values() и Map.keys() возвращает пустой итерируемый объект?
Для чего это?
Нам всё равно потом приходится преобразовывать его в массив, чтобы получить данные и с ними уже что-то делать

Делается он для экономии памяти, потому что нет смысла создавать ещё один массив с теми-же данными или ключами. Обычно можно итерироваться по тому самому "итерируему объекту", а преобразовывать в массив нужно реже.
Ответ написан
Комментировать
Alexandroppolus
@Alexandroppolus
кодир
Как в Map запомнился этот ключ в виде объекта

В js объект представлен ссылкой на объект, т.е. (под капотом) указателем на некоторый участок в памяти. Этот указатель - просто некоторое целое число, которое мы посмотреть не можем, но Map может. Те есть ключ по факту является числовым значением, а не каким-то непонятным "объектом".

как я могу обратится к Map через Map.get, чтобы получить значение ключа, который был объектом в переменной obj, но после я переменную перезаписал?

Пройтись по всем ключам, среди них будет твой потерянный. Напрямую через Map.get никак.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы