浅层克隆

    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、用递归函数将里面嵌套的对象暴露出来也使用浅拷贝