最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JavaScript深拷贝和浅拷贝概念与用法实例分析

来源:动视网 责编:小采 时间:2020-11-27 22:12:58
文档

JavaScript深拷贝和浅拷贝概念与用法实例分析

JavaScript深拷贝和浅拷贝概念与用法实例分析:本文实例讲述了JavaScript深拷贝和浅拷贝概念与用法。分享给大家供大家参考,具体如下: js中的浅拷贝和深拷贝,只是针对复杂数据类型(Objcet,Array)的复制问题。简单来讲浅拷贝和深拷贝都可以实现在原有对象的基础上再生成一份的作用。但是根据新生成的对象
推荐度:
导读JavaScript深拷贝和浅拷贝概念与用法实例分析:本文实例讲述了JavaScript深拷贝和浅拷贝概念与用法。分享给大家供大家参考,具体如下: js中的浅拷贝和深拷贝,只是针对复杂数据类型(Objcet,Array)的复制问题。简单来讲浅拷贝和深拷贝都可以实现在原有对象的基础上再生成一份的作用。但是根据新生成的对象

本文实例讲述了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深拷贝和浅拷贝概念与用法。分享给大家供大家参考,具体如下: js中的浅拷贝和深拷贝,只是针对复杂数据类型(Objcet,Array)的复制问题。简单来讲浅拷贝和深拷贝都可以实现在原有对象的基础上再生成一份的作用。但是根据新生成的对象
推荐度:
标签: js 拷贝 实例
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top