程序员

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

2020-09-17  本文已影响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}

上一篇下一篇

猜你喜欢

热点阅读