var obj1 = {};
var obj2 = {};
var copyObj1 = obj1;
var copyObj2 = obj2;
copyObj1 = {
name :'abc'
};
copyObj2.name = 'xyz';
console.log("obj1",obj1); // obj1 {}
console.log("obj2",obj2); // obj2 { name: 'xyz' }
console.log("copyObj1",copyObj1); // copyObj1 { name: 'abc' }
console.log("copyObj2",copyObj2); // copyObj2 { name: 'xyz' }
- 为什么
obj1
的值与copyObj1
不同,尽管copyObj1
是obj1
的引用? - 如果我们通过
{name:'abc'}
和obj1.name ='abc'
赋值有什么区别?
最佳答案
1) 为什么 obj1 的值与 copyObj1 不一样,尽管 copyObj1 是 obj1 的引用?
回答:-
您正在将 obj1 的引用存储到 copyObj1。但是这条语句
copyObj1 = {
name: 'abc'
};
创建一个新的 copy1 对象,并且对 obj1 的引用现在丢失了。
2) 如果我们通过 {name:'abc'} 赋值和 obj1.name ='abc' 有什么区别?
回答:-
两者的区别在于你什么时候做
a = {name: 'abc'} or a = {};
您正在创建一个新对象,该对象之前的任何引用现在都丢失了
a.name = 'abc';
只是改变对象的属性值。
关于javascript - 给 JavaScript 对象的属性赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38742872/