美文网首页程序员
前端学习笔记:js之深拷贝和浅拷贝

前端学习笔记:js之深拷贝和浅拷贝

作者: 魔都怪兽 | 来源:发表于2020-09-17 16:20 被阅读0次

    深拷贝和浅拷贝(只针对引用数据类型才有类似问题):

    1 浅拷贝是复制一个对象的指针,并没有复制对象本身,新旧对象指向同一个内存;但深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象;

       2

    区别:浅拷贝只复制对象的第一层属性、深拷贝可以对对象的属性进行递归复制;

    (js中assign方法 语法Object.assign(target,…sources)

    当target和sources对象中有相同的key时,在target对象中的值会被后面source对象的值覆盖。

                   例如:var o1 = { a: 1 };

                                                  varo2 = { b: 2 };

                                                  varo3 = { c: 3 };

                                                  varobj = Object.assign(o1, o2, o3);

                                                  console.log(obj);// { a: 1, b: 2, c: 3 }

    console.log(o1);  // { a: 1, b: 2, c: 3 }, target对象自身会被修改

    如果想要避免o1被改变,需要这样写:

    var obj = Object.assign({},o1,o2,o3);//给一个空对象作为target,这样改变的是空对象

    console.log(obj);// { a: 1, b: 2, c: 3 }

    console.log(o1); // { a: 1}

    相关文章

      网友评论

        本文标题:前端学习笔记:js之深拷贝和浅拷贝

        本文链接:https://www.haomeiwen.com/subject/zlalyktx.html