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' }



尽管obj1copyObj1的引用,为什么copyObj1的值与obj1不同?
如果我们用{name:'abc'}obj1.name ='abc'赋值,有什么区别?

最佳答案

1)尽管copyObj1是obj1的引用,为什么obj1的值与copyObj1不同?

答:-

您正在将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/

10-11 15:48