JavaScript实现对象深拷贝的方法(5种)
知识回调(不懂就看这儿!)
知识专栏 | 专栏链接 |
---|---|
JavaScript知识专栏 | https://blog.csdn.net/xsl_hr/category_12024214.html?spm=1001.2014.3001.5482 |
JavaScript深浅拷贝的区别+图解原理 | https://blog.csdn.net/XSL_HR/article/details/129838095?spm=1001.2014.3001.5501 |
有关JavaScript的相关知识可以前往JavaScript知识专栏查看复习!!
场景复现
在上期文章中,我们从底层原理方面对JavaScript数组对象的浅拷贝和深拷贝进行了详细的介绍,看完上期文章之后,想必大家对浅拷贝与深拷贝都有了一定的认识,而本期文章将分享五个非常实用的深拷贝方法和三个实用的浅拷贝方法。
好的深拷贝方法有什么作用?
- 首先,深拷贝的学习对于我们在项目开发中进行数据处理是非常有用的。
- 深拷贝原理和方法的学习能够帮助我们规范代码,提高代码的有效性。
- 通知深拷贝方法的学习能够更好地帮助我们解决因为拷贝方式不当而产生的bug。节约更多debug的时间。
下面我们来通过代码示例来详细介绍五种深拷贝的方法。 👇👇👇
实现对象深拷贝的五种方法
1.json暴力转化
通过JSON.stringify()
和 JSON.parse()
将对象转为字符串之后在转为对象。
var obj = {
name:'123'}
var obj2 = JSON.parse(JSON.stringify(obj))
var arr = ['old', 1, true, ['old1', 'old2'], {
old: 1}]
var new_arr = JSON.parse(JSON.stringify(arr))
console.log(new_arr);
- 这种简单粗暴的方式有局限性,当值为
undefined
、function
、symbol
会在转换过程中被忽略。JSON.stringify()
不仅可拷贝数组还能拷贝对象(但不能拷贝函数,也不能解决循环引用问题)
2.es6扩展运算符
var obj = {
name:'123',age:13};
var obj2 = {
...obj}
只能深度拷贝对象的第一层,如果对象