js 中提供3个特殊引用类型 String、Number、Boolean,与其他引用数据类型一样,但也具有基本数据类型的相应的行为
创建基本一个基本数据类型
使用 带 new 关键字的构造函数创建 -----引用类型
let str = new String('使用构造函数创建')
str.color = 'red'
console.log(str.color) //red
console.log(typeof str) //object
通过构造函数的方式创建,基本数据类型,可以理解为创建了一个实例(执行流一直保存在内存中),可以添加和访问属性和方法,此时 typeof === object
使用字面量、同名转换函数创建 -----基本包装类型
let str2 = '字面量方式'
str2.color = '#ccc'
console.log(str2.color) //undefined
console.log(typeof str2) //string
let str3 = String('同名转换函数创建')
str3.color = '#f40'
console.log(str3.color) //undefined
这两种方式,实际是创建基本包装类型的对象,步骤如下:
1、创建 string 实例
2、在实例访问特定的方法 如:indexOf,substring等
3、销毁这个实例
所以,当我们在这种包装类型上推添加属性、方法是访问不到的,因为被销毁了
实际上,基本包装类型和引用类型区别就在于生命周期,new操作符创建的引用类型的实例时,执行流离开作用域前,一直保存在内存中