浅层克隆
1、数组
1.slice()
2.concat()
3.拓展运算符
4.Array.from
2、Object
1.Object.assign()
Object.assign(dest, [src1, src2, src3…])
1.第一个参数 dest 是指目标对象。
2.更后面的参数 src1, …, srcN(可按需传递多个参数)是源对象。
3.该方法将所有源对象的属性拷贝到目标对象 dest 中。换句话说,从第二个开始的所有参数的属性都被拷贝到第一个参数的对象中。
4.调用结果返回 dest。
我们还可以使用这个方法合并多个对象,只需要在后面 src 参数那里输入多个对象。如果合并的对象中有相同属性名的属性,那么后添加的对象属性会覆盖前面的对象属性。
深度克隆
1、用JSON方法将对象转成字符串(JSON.stringify())后,在转换成对象(JSON.parse()),但是这个方法有个问题,就是不能转换undefined和函数
2、用londash里的方法
3、用递归函数将里面嵌套的对象暴露出来也使用浅拷贝