javascript两种方法实现深拷贝
方法一
对于内容都是一些基本数据类型( string、number、null、undefined、boolean、symbol(ES6新增) 变量值存放在栈内存中,可直接访问和修改变量的值 )的Array或者Object, 可以使用Array.slice()
,Array.concat()
或者Object.assign()
的方法. 这个方法严格意义上讲属于浅拷贝, 但是确实是在内存的堆中复制了一份, 所以如果Array或者object的元素有引用对象的话(如['name','age',{data: 'xxx', attributes: 'xxx'}]
, 修改引用对象会导致另一个copy的变量发生改变.
方法二
使用JSON.parse(JSON.stringify( array ))
可以将array
变量进行深拷贝,但是不能处理函数、正则等对象.