对JS一点数据结构的感悟

浅克隆 & 深克隆

栈在栈顶做操作,后进的先出, 基本 类型的数据(小)和指针存储在这里, 堆中,存储 引用 类型的数据

  • 所以, const ,Object.freeze等不能修改的其实是它的 指针

  • 浅克隆 的本质就是把 引用 类型的的指针指向同一个, 基本 类型会新开辟一个新的空间给它储存

  • 深克隆是相对于 引用 类型而言,意思就是要新开一个空间给它,而此时还需要考虑这个数据存储的 深度 ,比如数组中包含的一个对象,这时候就算遍历了数组,而这个数组中的对象还只是 浅克隆 而已(像不像一颗树)

  • Object.assign, 展开操作符(…)等等都是理论上的浅克隆,既是被克隆的对象指向别处了,克隆他的对象指针还是老的地址,要实现 安全的深克隆 还是用已有的轮子吧

JS一些新的数据结构

name特性用处方法
Set成员唯一,无序,可遍历去重add、delete、has
WeakSet成员都是对象,不能遍历可以用来保存DOM节点,不容易造成内存泄漏add、delete、has
Map本质上是键值对的集合,类似集合,可以遍历可以跟各种数据格式转换
WeakMap只接受对象作为键名(null除外),键名是弱引用,键值可以是任意的,键名所指向的对象可以被垃圾回收,此时键名是无效的不能遍历get、set、has、delete
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值