遍历赋值 -> 简单循环赋值是浅拷贝,递归循环判断类型赋值:是深拷贝
Object.create() -> 简单循环赋值是浅拷贝,递归循环判断类型赋值:是深拷贝
JSON.parse()和JSON.stringify() ->深拷贝
深浅拷贝:假设B复制了A,当修改A时,看B是否发生变化,B变了,说明时浅拷贝;B没变,就是深拷贝

浅拷贝两种方式:遍历 和 Object.create()
深浅拷贝
遍历赋值
Object.create()
JSON.parse() 和JSON.stringify()
跟着变的是 浅拷贝, 没变是深拷贝。

遍历赋值,浅拷贝

浅拷贝:遍历 create
for...in 语句用于对数组或者对象的属性进行循环操作。
for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。
“变量”用来指定变量,指定的变量可以是数组元素,也可以是对象的属性。
// 只复制第一层的浅拷贝function simpleCopy(obj1) {
var obj2 = Array.isArray(obj1) ? [] : {};
for (let i in obj1) {
obj2[i] = obj1[i];
}
return obj2;}
var obj1 = {
a: 1,
b: 2,
c: {
d: 3
}}
var obj2 = simpleCopy(obj1);
obj2.a = 3;
obj2.c.d = 4;
深拷贝:更改拷贝后的值不会影响到拷贝前的值
浅拷贝: 更改拷贝后的值会和拷贝前的值一致
常用拷贝方法:
遍历赋值
Object.create()
JSON.parse()和JSON.stringify()
深拷贝 & 浅拷贝
浅拷贝:假设B复制了A,当修改A时,看B是否会发生变化,如果B跟着变了.
深拷贝:假设B复制了A,当修改A时,看B是否会发生变化,如果B没变.
1、深拷贝
假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变,说明是浅拷贝
如果B没变,说明是深拷贝
2、浅拷贝 在工作中少用
(1) 遍历
(2) Object.creat() 复制到原型__proto__