js中对象和数组的深浅拷贝

197 阅读1分钟

浅拷贝

浅拷贝简单来说就是两者是指向一个对象

数组的浅拷贝

array.concat()
array.slice(0)
两者都只能拷贝一层。所以如果数组中含有对象,一个数组中的对象发生变化,另一个数组中的对象也会发生变化。
如果数组中都是Number,Boolean,String等基本类型,这两种方式可以理解成深拷贝。

对象的浅拷贝

直接遍历赋值
ES6:var copyObj = Object.assign({}, obj)
ES7:var copyObj = { ...obj }

深拷贝

数组的深拷贝

遍历拷贝

对象的深拷贝

JSON.parse(JSON.stringify(Obj))【满足一般场景下的深拷贝】