美文网首页
JS中数组和对象的 深复制(拷贝)与浅复制(拷贝)

JS中数组和对象的 深复制(拷贝)与浅复制(拷贝)

作者: 三寸日光_梦尧 | 来源:发表于2018-01-25 15:32 被阅读0次

JS中数组和对象的 深复制(拷贝)与浅复制(拷贝)

1.js中有五种简单的数据类型(null,string,undefined,number,boolean)和一种复杂数据类型(Object),当我们复制简单类型时,效果如下

也就是说 当b被重新赋值时 a并不会被改变。

但是当我们复制复杂的数据类型时以数组为例 ,效果如下

我们看到 当我们改变b的值时,a也被改变了,这显然不是我们想要的结果,所以便出现了深复制这个说法,下面以数组为例,说明一下数组深复制的方法。

2,数组的深复制

(1)for循环

循环赋值,改变b的值 不会影响a的值,下面穿插一个知识点: 数组中循环最好不要用for in ,因为for in 循环 会循环出原型链上的内容,当数组原型链上声明了方法,我们得到的结果就不是我们想要的了。

(2)slice方法

slice方法的定义为:返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素;

重点在  返回一个 新的数组 ,也就是说不会改变原数组,也就是达到了我们的目的

补充知识点:slice中参数为负数时,则用数组长度加上该数来确定相应的位置

(3)concat方法

concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本

链接一个空数组还是原有数组,从而达到复制的目的,生成新的数组,不会改变原有数组

(4)ES6的 “...“ 扩展运算符 : 将一个数组转为用逗号分隔的参数序列

3.对象的深复制

(1)for循环 实现深复制

(2)转换成json再转换成对象

相关文章

  • JS中对象的复制

    JS中的对象复制分为两种情况:深拷贝和浅拷贝。深拷贝和浅拷贝的区别在于对数组和对象的拷贝,对它们拷贝时浅拷贝只是拷...

  • javascript 数组以及对象的深拷贝

    数组的深拷贝在js中,数组和对象的复制如果使用=号来进行复制,那只是浅拷贝。如下图演示: for 循环实现数组的深...

  • java 对象的拷贝

    拷贝:即复制 对象拷贝:即对象复制 java 对象拷贝分类:浅拷贝、深拷贝 java 对象的浅拷贝和深拷贝针对包含...

  • JS中数组和对象的 深复制(拷贝)与浅复制(拷贝)

    JS中数组和对象的 深复制(拷贝)与浅复制(拷贝) 1.js中有五种简单的数据类型(null,string,und...

  • 前端笔记(二) 对象的深浅拷贝,函数的防抖与节流,函数柯里化 ,

    对象的深浅拷贝 对象的深拷贝与浅拷贝的区别: 浅拷贝:仅仅复制对象的引用, 而不是对象本身。 深拷贝:把复制的对象...

  • 浅拷贝和深拷贝

    本文参考:JavaScript中的浅拷贝和深拷贝js 深拷贝 vs 浅拷贝深入剖析 JavaScript 的深复制...

  • iOS 深拷贝,浅拷贝

    深拷贝与浅拷贝 浅拷贝:浅拷贝并不拷贝对象本身,只是对指向对象的指针进行拷贝,并没有进行真正的复制,而是复制的对象...

  • 浅拷贝与深拷贝

    一 、基本概念 1.1 深拷贝 与 浅拷贝 对象拷贝有两种方式:浅复制和深复制。顾名思义,浅复制,并不拷贝对象本身...

  • Java的浅拷贝与深拷贝

    Java的浅拷贝与深拷贝 一、概念 浅拷贝浅拷贝仅仅复制所考虑的对象(包括对象中的基本变量),而不复制它所引用的对...

  • python中的浅拷贝和深拷贝

    浅拷贝和深拷贝: 浅拷贝 shallow copy 浅拷贝是指在对象复制过程中,只复制一层变量,不会复...

网友评论

      本文标题:JS中数组和对象的 深复制(拷贝)与浅复制(拷贝)

      本文链接:https://www.haomeiwen.com/subject/vgmsaxtx.html