js的深拷贝和浅拷贝

1.js的数据类型

js的数据类型有:Number String Boolean undefined null Object Symbol

1.1数据类型分类:

基本类型和引用类型

1.1.1基本类型

Number String Boolean undefined null

基本类型的数据是存放在栈中(stack),他们的值直接存放在变量可以访问的位置,这是因为他们的大小是固定的,所以可以将他们存储在较小的内存区域-栈中,这样便于迅速查找变量的值。

1.1.2引用类型

Object Array Function

引用类型对象存储在堆中,而指向变量的指针是存储在栈中,指针指向的是堆中的存储对象。引用类型的大小是不固定的,如果把引用类型也放在栈中,这样会降低变量查询速度。

1.2不同的内存分配机制带来不同的访问机制

1.2.1引用类型访问机制-引用访问

javascript中不允许直接访问保存在堆中的引用类型的对象,所以访问一个对象的时候,首先先获取这个对象存放在栈中地址,然后再根据这个地址在获取这个对象的值,这种访问叫做按需访问。

1.2.2基本类型

基本引用类型(原始数据类型)是可以直接访问的

2.深拷贝和浅拷贝

2.1定义

浅拷贝:浅拷贝是创建一个新的变量,这个变量上有着对原始变量的属性的一份精准拷贝,如果属性是基本类型,拷贝的就是基本类型的值,如果是引用类型拷贝的是内存地址,如果是其中一个对象改变了,就会影响到另一个对象。

深拷贝:深拷贝就是将对象从内存中完全拷贝一份出来,然后在内存中开辟新的区域用来存放新的对象,且修改新对象不会影响到旧的对象。

2.2浅拷贝和深拷贝的方法

2.2.1浅拷贝实现方式

1.Object.assign();

2.展开运算符...

3.Array.prototype.concat()

4.Array.prototype.slice()

2.2.2深拷贝的实现方式

1.JSON.parse(JSON.stringify())

2.jQuery.extend()方法

3.手写递归方法

参考资料:

JS的基本数据类型和引用数据类型 - 掘金

浅拷贝与深拷贝 - 掘金

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值