Javascript - 分配空对象的效果

Javascript - Effect of assigning empty object

JavaScript学习者-请帮助理解,

在下面的 JS 片段中,当 "nickname" 属性 添加到对象 person1 时,它也会反映在 Person 对象中。

但是,当 person1 设置为空对象 {} 时,请帮助理解为什么它不会影响 person 对象?


var person  = {
  "firstname" : "Tony",
  "lastname" : "Stark"
};

var person1 = person;

person1.nickname = "Ironman";

console.log(person); 
//Object { firstname: "Tony", lastname: "Stark", nickname: "Ironman" }
console.log(person1);
//Object { firstname: "Tony", lastname: "Stark", nickname: "Ironman" }  

person1 = {};

console.log(person);
//Object { firstname: "Tony", lastname: "Stark", nickname: "Ironman" }  
console.log(person1);
//Object {  }

提前致谢!!

In the below JS snippet, when a "nickname" property is added to object person1, it reflects in Person object as well.

你这样做 person1 = person 这样,现在两个变量都指向相同的内存地址,因此改变一个也会反映在另一个中。

But, when person1 is set to an empty object {} , please help understand why it does not affect person object?

通过 person1 = {},您为它分配了一个 new 内存地址,因此 personperson1 现在是两个不同的实体并且改变一个不会影响另一个。

Objects 基本上在它被分配给另一个变量的时候被引用。因此,当您影响存储在变量中的一个 object 时,它也会影响另一个变量,因为两者共享相同的引用。

并且当您用另一个值替换一个引用时,旧的引用将被切断,新的 object 和新的内存引用将被存储。