JavaScript学习者 - 请帮助理解,
在下面的JS片段中,当一个"昵称"属性被添加到对象person1,它也反映在Person对象中。
但是,当person1设置为空对象{}时,请帮助理解为什么它不会影响人物对象?
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 { }
提前致谢!!
答案 0 :(得分:0)
在下面的JS片段中,当一个"昵称"属性被添加到对象 person1,它也反映在Person对象中。
你做person1 = person
所以,现在两个变量都指向相同的内存地址,因此不同的变量也会反映在另一个中。
但是,当person1设置为空对象{}时,请提供帮助 明白为什么它不会影响人物对象?
通过执行person1 = {}
,您为其分配了一个新的内存地址,因此person
和person1
现在是两个不同的实体并且更改一个不影响对方。
答案 1 :(得分:0)
Objects
在被分配给另一个变量时基本上被引用。因此,当您影响存储在变量中的一个object
时,它也会影响另一个变量,因为两者都共享相同的引用。
当您使用另一个值替换引用时,旧的引用将被截断,并且将存储带有新内存引用的新object
。