@Boris009

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

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

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

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы