克隆对象&&数组(一)
1 从数据类型说起
JavaScript
的数据类型:
- 基本类型:
Null,undefined,number,string,Boolean
存放在栈内存
的简单数据,可以直接访问 - 引用类型:
Array,Object,Function
存放在堆内存
,存放的是该对象的地址指针
2 深浅拷贝由来
引用类型的数据,因为指向指针的问题,浅拷贝
就会导致指向同一处,那么修改拷贝的任一者,都会导致全部都改
了。
这时候,就需要深拷贝
,它可以开辟新的内存地址,让拷贝的对象们指向不同,这样就不会互相影响
了。
3 浅拷贝
浅拷贝
就是拷贝第一层的基本类型值
,以及第一层的引用类型地址
。
(1)for…in…遍历属性
1 | function shallowClone(copyObj) { |
(2)Object.assign()
将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。只遍历一层
基础用法
1 | const target = { a: 1, b: 2 }; |
复制对象(浅)
1 | const obj = { a: 1 }; |
(3) Array
的slice & concat
方法
它们虽然在 demo 里看起来像深,其实也是浅拷贝
1 | var array = [1,2,3]; |
(4) 展开语法...
对数组和对象的浅拷贝,类似Object.assign的功能。只能用于可迭代对象。
1 | // 数组 |
- 本文标题:克隆对象&&数组(一)
- 本文作者:Jonnzer
- 创建时间:2020-07-13 15:12:00
- 本文链接:https://jonnzer.github.io/2020/07/13/克隆对象&&数组(一)/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
评论