JavaScript数据类型之间存储的区别?

JavaScript数据类型之间存储的区别?

我们知道,JavaScript分为了基本数据类型和复杂数据类型,既然分了两部分,那么他们之间就存在一定的差距。它们之间最大的区别就是在存储上的区别

我们的存储空间分为了

栈:

主要存储基本数据类型的内容

堆:

主要存储复杂数据类型的内容

基本数据类型在内存中的存储情况

简单来说,就是直接在 栈空间 内存储一个数据

复杂数据类型在内存中的存储情况

例如,下面这个对象的存储

var obj={
	name:'jack',
	age:18,
	gender:'男'
}
  • 首先,在堆里面开辟一个存储空间
  • 对象里面的数据存到这个堆空间里面
  • 存储空间的地址赋值给栈里面的变量

如图示

在这里插入图片描述

通俗地讲,对象在栈区存储的是地址。

数据类型之间的比较

  • 基本数据类型是 值 之间的比较
 var num=1
 var str='1'
 num==str//true
  • 复杂数据类型是 地址 之间的比较
var obj={
	name:'jack',
	age:18
}
var obj1={
	name:'jack',
	age:18
}
obj==obj1//false

我们创建了两个对象obj和obj1,那么计算机就会在内存中开辟两个堆空间存储这两个变量,而这两个堆空间的内存地址又不一样,因此obj和obj1也不一样

既然这样,那么如何复制一个对象呢?

对象之间的复制?

先看一个例子

var obj={
    name:'jack',
    age:19
}
var obj2=obj
obj2.name='mike'
console.log(obj.name)//mike

如果大家对这个结果感到惊讶的话,那么就说明还没有彻底理解前面所说的。

我们来看一看这个

var obj2=obj 这个语句实际上就是将obj的地址赋给obj2,所以obj2此时就相当于obj

如何建立两个互不影响但内容相等的对象呢?

  • 我们首先创立两个互不影响的对象
  • 然后将内容复制过去就行了
var obj1={
	name:'jack',
	age:19
}
var obj2={

}
for(var i in obj1)
{
	obj2[i]=obj1[i]
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值