【前端基础】——浅拷贝和深拷贝

浅拷贝和深拷贝

浅拷贝和深拷贝的定义

浅拷贝

浅拷贝对内存地址的复制,让目标对象指针和源对象指向同一片内存空间。

深拷贝

深拷贝是指拷贝对象的具体内容,其内存地址是自主分配的,拷贝结束之后俩个对象虽然存的值是一样的,但是内存地址不一样,俩个对象互相不影响,互不干涉。

数据类型的值传递和地址传递

JavaScript的数据类型可以分为基本数据类型和引用数据类型

  • 基本数据类型有:Number、String、Boolean、Null、Undefined、Symbol、
  • 引用数据类型有:Object、Function、Array、Regexp、Date、

普通数据类型和对象的存储方式:
   普通数据类型一般是存储在中的,而对象一般是存储在中的,同时在栈中存放了一个地址数据指向堆中的数据。当调用对象时,首先会获取栈中的地址,根据该地址去堆中找到该对象数据。

针对普通类型,在赋值过程中一般是值传递

//Number
var num1=12;
var num2=num1;
num2=34;
console.log(num1,num2);//12,34
//String
var str1="abc";
var str2=str1;
str2="def";
console.log(str1,str2);//abc,def

针对引用类型中的对象和数组,在赋值过程中一般是地址传递

//对象
var obj1 = {
    name: 'jack' }; 
var obj2 = obj1; //复制obj1的引用
obj2.name = 'mary';
//此时obj1和obj2全都指向一个地址,修改地址值,obj1和obj2的值都会改变
console.log(obj1.name, obj2.name);//mary,mary
// []
a = ['a', 'b', 'c'
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值