JavaScript深拷贝和浅拷贝概念与用法实例分析
本文实例讲述了JavaScript深拷贝和浅拷贝概念与用法。分享给大家供大家参考,具体如下:
js中的浅拷贝和深拷贝,只是针对复杂数据类型(Objcet,Array)的复制问题。简单来讲浅拷贝和深拷贝都可以实现在原有对象的基础上再生成一份的作用。但是根据新生成的对象能否影响到原对象可以分为浅拷贝和深拷贝。
概念1:浅拷贝
浅拷贝就是指拷贝引用,新生成的引用和原来的引用都是指向同一个对象的实例,彼此之间的操作会相互影响。
概念2:深拷贝
在堆中重新开辟内存,把原引用对应的对象实例中所有的内容进行拷贝,因此保证了深拷贝的对象和原来的对象是完全隔离的,他们之间相互没有影响。
概念3:数组深拷贝的实现
1. 使用for
循环
<script type="text/javascript"> var arr1=['a','b','c']; var arr2=[]; function deepCopy(arr1,arr2){ for(var i=0;i<arr1.length;i++){ arr2[i]=arr1[i]; } } deepCopy(arr1,arr2); arr2[1]='d'; console.log(arr1);//['a','b','c'] console.log(arr2);//['a','d','c'] </script>
2. 使用slice()
方法
<script type="text/javascript"> var arr1=['a','b','c']; var arr2=arr1.slice(0); arr2[1]='d'; console.log(arr1);//['a','b','c'] console.log(arr2);//['a','d','c'] </script>
3. 使用concat
方法
<script type="text/javascript"> var arr1=['a','b','c']; var arr2=arr1.concat(); arr2[1]='d'; console.log(arr1);//['a','b','c'] console.log(arr2);//['a','d','c'] </script>
概念4:对象的深拷贝
1. 使用for
循环
<script type="text/javascript"> var obj = { name: 'FungLeo', sex: 'man', old: '18' } function copyObj(obj) { let res = {} for (var key in obj) { res[key] = obj[key] } return res } var obj2 = copyObj(obj); obj2["name"]="kka"; </script>
2. 借助JSON来实现
<script type="text/javascript"> var obj = { name: 'FungLeo', sex: 'man', old: '18' } var obj2=JSON.parse(JSON.stringif(obj)); obj2["name"]="kka"; </script>
总结:以上就是实现数组和对象深拷贝的一些常用方法,可以结合具体的情形使用适合的方法。
更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
- Javascript 浅拷贝、深拷贝的实现代码
- JavaScript数组深拷贝和浅拷贝的两种方法
- 浅谈JavaScript中面向对象的的深拷贝和浅拷贝
- js对象浅拷贝和深拷贝详解
- javascript对浅拷贝和深拷贝的详解
- javascript深拷贝和浅拷贝详解
- 浅析javaScript中的浅拷贝和深拷贝
- JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
- javascript深拷贝、浅拷贝和循环引用深入理解
- JavaScript实现浅拷贝与深拷贝的方法分析
- JS浅拷贝和深拷贝原理与实现方法分析
- JS中实现浅拷贝和深拷贝的代码详解
- javascript二维数组和对象的深拷贝与浅拷贝实例分析
- javascript 关于赋值、浅拷贝、深拷贝的个人理解
- JS赋值、浅拷贝和深拷贝(数组和对象的深浅拷贝)实例详解
- 详解JS深拷贝与浅拷贝
- JS对象复制(深拷贝和浅拷贝)
- js深拷贝与浅拷贝一文彻底搞懂
相关文章
BootStrap中Datepicker控件带中文的js文件
bootstrap-datepicker 是一个非常优秀的时间选择插件。这篇文章主要介绍了bootstrap-datepicker带中文的js文件的相关资料,需要的朋友可以参考下2016-08-08在Javascript中为String对象添加trim,ltrim,rtrim方法
利用Javascript中每个对象(Object)的prototype属性我们可以为Javascript中的内置对象添加我们自己的方法和属性。2006-09-09
最新评论