更新一种对象深度拷贝的方法

一直在为之前看到过的对象深度拷贝代码之复杂而忧桑,我这种脑容量,怎么取记住嘛!而且方法又都不是常用的,能不能简单明了一点!今天,有人告诉我了一个简单明了的方法,下面演示:

	首先,我来定义一个对象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!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章