JSON深拷贝缺点


引用对象深拷贝,我一直用的是2次JSON转换,也就是先将对象转成string再转成对象,一直没有什么问题。

后来发现这样做还是有个缺点,那就是原对象的方法拷贝不出来。代码如下所示。

      //原对象Person1,有属性name和方法show
const Person1 = { 'name': 'name1', show() { return 'hello world!'; } };
//直接赋值 const Person2
= Person1; console.log(Person2.name); console.log(Person2.show());
//深度拷贝 const Person3
= JSON.parse(JSON.stringify(Person1)); console.log(Person3.name); console.log(Person3.show()); //此方法没有,会报错

将上述代码在控制台直接粘贴,回车之后会看到结果,如下图所示

 所以使用JSON实现深度拷贝有这个缺点,得注意

ES6