对象的引用和复制
原始类型的复制:
let a = "你好";
let b = a;
这个时候,,我们就有了两个独立的变量"你好",这就好比克隆羊一样,它们都用有自己的身体,一直羊死翘翘了,也不会影响另一只羊。
而对象的克隆就不是这样,对象的克隆,并不是真正意义上的克隆。赋值的对象变量存储的不是对象本身,而是该对象"在内存中的地址",是该对象的"引用"。当复制该对象的时候,只是引用被复制,而该对象并没有被复制,这就好比分身,他们都指向同一个本体,如果分身受到伤害,本体也会受到伤害,本体受到伤害,其他的分身则会受到影响。
let a = {};
let b = a; //直接复制引用
console.log(a==b);
console.log(a===b); // 都为true
从上面的例子可以看出,如果直接复制引用的话,两者是完全相同的。如果是创建两个空的对象:
let a = {};
let b = {};
console.log( a == b ); //返回false
两者虽然都是空对象,但是返回结果为false,则可以证明,两者引用地址不相同。
浅拷贝
浅拷贝并不会拷贝到对象中的子对象: