JS浅拷贝和深拷贝

浅拷贝:Array.prototype.concat()拷贝数组,Object.assign() 拷贝对象
1.两个方法都只是浅拷贝,只拷贝第一级,第二级以上只拷贝地址。例如 obj2.b.c改变时,原对象和新对象的值都会改变。

  1. 两个方法都是按顺序进行合并,但是 Object.assgin 会把重复的属性进行保留最新值的操作,concat 不会
  2. concat 会创建一个新的数组(第一级拷贝)。而 Object.assgin 则是把第一个参数对象当成操作对象,把其他参数对象的属性往它身上进行合并,不会创建新对象,是对第一个参数对象的直接操作
  3. 不会继承有参与合并对象“本身”及“原型对象”上的方法和属性。

深拷贝:let obj3 = JSON.parse(JSON.stringify(obj1));





a



    


你可能感兴趣的:(JS浅拷贝和深拷贝)