JS中对象深拷贝的方法

JS中,拷贝对象分为浅拷贝和深拷贝。

浅拷贝指的是拷贝引用;深拷贝指的是拷贝里面的数据成一个新的对象。

很多时候,我们更需要的是深拷贝,但是一层一层的遍历又太麻烦了,那么有没有比较快速的方法?

答案当然是有的,我们可以使用JSON.stringify()JSON.parse()

  • JSON.stringify():负责将JSON对象转换成字符串
  • JSON.parse():负责将JSON字符串转换成对象

具体我们来看个小例子:

var a = { name: 'dazhi' };
var b = JSON.parse(JSON.stringify(a));

这时候,对象b就是对象a的一个深拷贝了。

我们在控制台打印出来测试一下:

先来看下浅拷贝:

深拷贝:

当对象中包含undefined、函数和symbol值的时候,在JSON.stringify()序列化过程中会被忽略,所以需要避免在包含上述值的源对象中采用这种拷贝方式。