javascript 中引用类型变量的混淆

Confusion around reference type varaible in javascript

let user = {
  name: "John",
  age: 30,
  sayHi() {
    alert( this.name ); 
  }
};
let admin = user;
user = null; // overwrite to make things obvious
admin.sayHi(); // John

这里的用户变量应该是引用类型变量,而不是原始变量。因此,当我们将用户变量分配给 admin 变量时,我们并没有深入处理用户变量。因此两者都应该指向堆内存中的相同位置。

所以当我们分配 user = null 时。所以 admin 变量也应该等于 null,因为它们都应该指向堆内存中的相同位置。

但是管理对象仍然能够访问 sayHi() 方法。谁能解释一下为什么?

你需要这样看。该变量只是指向在浅拷贝期间创建的对象。当您将用户分配给 null 时,该对象仍然存在,只是其引用已更改为 null。管理员仍然指向参考用户早先指向因此 behviour