JS中基本数据类型和引用数据类型的比较
1.基本数据类型与包装类
- 包装类不可互相比较
- 一般不允许直接把简单数据类型转换为包装类
- var a = new String('abc') 实际上a存储的是内存地址
- 基本数据类型不可变
- var name = "li"
- name.toUpperCase() 但是name依旧还是"li",调用方法后出现了一个新的字符串
- 基本数据类型的比较是两个值的比较
- 基本数据类型存储在栈(包括标识符和值)之中,二包装类存储在堆
- 引用类型的值是可以改变的
- 引用类型需要同时用到堆区和栈,栈保存着引用类型名和对应的指向对象的地址
- 基本数据类型a=10 ,b=a 实际上a和b是分别在栈上建立了两个区域存储,互相独立。
- 对象的赋值,实际是现在栈中创建一个引用类型名和赋值指向对象的地址。
什么时候使用包装类来转化基本数据类型?
-
因为基本数据类型不能添加属性和方法,所以需要用到属性和方法的时候,就需要用到包装类来转化
-
str = "2020-11-01" str.split("-") 得到一个数组["2020","11","01"]
一个基本数据类型之所以可以调用方法是因为浏览器会临时把基本数据类型转化为包装类进行操作,调用完了之后再返回基本数据类型