Не думайте об этом в терминах адресов памяти. JavaScript не имеет дело с вычислениями на этом уровне.
let user = {}
Значение user
является ссылкой на объект.
let user2 = user;
Обратите внимание, что значение user2
является ссылкой на тот же объект.
user.name = 'Suzan';
Теперь свойство name
этого объекта имеет значение 'Suzan'
.
Это дает точно такой же результат, как и использование user2.name
тем же способом.
user = null;
Теперь значение user
равно нулю.
Значение user2
по-прежнему является ссылкой на этот объект.
Назначение null
* только user
только изменяет значение из user
. Это не влияет на объект, на который ссылалось его старое значение.
console.log(user2.name);
Поскольку user2
является ссылкой на исходный объект, это все еще работает.
Если вы также назначили user2 = null
, тогда не останется ссылок на этот объект, и вы не сможете получить к нему доступ (и он будет собирать мусор).