Memory Heap: где хранятся объекты
Как две переменные обращаются к одному объекту в памяти.
Когда программа создаёт объект { hp: 100 }, его данные нужно где-то хранить. V8 использует для хранения объектов область памяти, которую называют heap.
Рассмотрим, как создаётся объект и появляется вторая ссылка:
const player = { hp: 100 };
const target = player;
target.hp = 80;
// player.hp is also 80
const player = { hp: 100 }создаёт объект игрока. На интерактивной схеме V8 выделяет для него память в куче и сохраняет там свойствоhp. Переменнаяplayerполучает ссылку на этот объект.const target = playerчитает значениеplayerи присваивает егоtarget. Так копируется ссылка: обе переменные теперь позволяют обратиться к тому же объекту. Второй объект не создаётся.target.hp = 80обращается по ссылке к объекту и изменяет его свойствоhp. Сами ссылки не меняются. Поэтомуplayer.hpтоже становится равно80.
playertarget{ hp: 80 }target.hp = 80. Обе стрелки ведут к одному объекту.На схеме показаны связи между переменными и объектом. Реальное размещение данных в памяти определяет движок. Ниже выполним пример по строкам: объект, ссылки и значения свойств будут появляться по мере выполнения.