一直在为之前看到过的对象深度拷贝代码之复杂而忧桑,我这种脑容量,怎么取记住嘛!而且方法又都不是常用的,能不能简单明了一点!今天,有人告诉我了一个简单明了的方法,下面演示:
首先,我来定义一个对象obj1:
let obj1 = {a: '1', b: '2', c: {d: '1'}}
然后,就是拷贝了:
let obj2 = JSON.parse(JSON.stringify(obj1));
就…OK啦!
不信看我的效果图!
这里,就拷贝出一个新的对象来啦!
接下来,让我们来改一改对象看看会不会出什么幺蛾子!
从结果可以看出,改变源对象(obj1),对拷贝出来的对象(obj2)不会有影响
那改变新对象obj2肯定也不会对源对象obj1有影响了
由上图可得出,确实不会。
终于真的有一个如此简单的方法了,学到了学到了,只是希望我不要把顺序记反了的好,毕竟两个JSON.xxx傻傻分不清楚
下面附完整截图
下面的没截出来,屏幕不够长了,不过也不影响,obj1还是最开始直接改变之后那个值。
至于原理,看到代码大概能解释一点,JSON.stringfy()方法本来就是将对象转化成json字符串,字符串肯定会开辟一个新的地址,再把它解析为JavaScript对象就好了。
好了,see you!