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 内存地址,因此 person
和 person1
现在是两个不同的实体并且改变一个不会影响另一个。
Objects
基本上在它被分配给另一个变量的时候被引用。因此,当您影响存储在变量中的一个 object
时,它也会影响另一个变量,因为两者共享相同的引用。
并且当您用另一个值替换一个引用时,旧的引用将被切断,新的 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 内存地址,因此 person
和 person1
现在是两个不同的实体并且改变一个不会影响另一个。
Objects
基本上在它被分配给另一个变量的时候被引用。因此,当您影响存储在变量中的一个 object
时,它也会影响另一个变量,因为两者共享相同的引用。
并且当您用另一个值替换一个引用时,旧的引用将被切断,新的 object
和新的内存引用将被存储。