在JS中为我们提供了三个包装类,这三个包装类可以将基本数据类型的数据转换为对象
String()
- 可以将基本数据类型字符串转换为String对象
Number()
- 可以将基本数据类型的数值转换为Number对象
Boolean()
- 可以将基本数据类型的布尔值转换为Boolean对象
var num = new Number(3) //Number类型的对象
var bool1= new Boolean(true)
var bool2= new Boolean(true)
var bool3 = true
bool1 == bool2 为false 因为对象比较的是地址
bool1 == bool3 为true 因为自动类型转换了
bool1 === bool3 为false
在实际应用中不会使用基本数据的对象,如果使用基本数据类型的对象,在做一些比较时可能会带来一些不可预期的结果
b为false对象 if语句仍运行
因为false是对象,对象转成布尔值都是true
方法和属性只能添加给对象,不能添加给基本数据类型
当我们对一些基本数据类型的值去调用属性和方法时,浏览器会临时使用包装类将其转换为对象然后再调用对象的属性和方法,调用完以后再将其转换为基本数据类型
var s='sss' //基本数据类型
s.hello='你好' //添加属性不会报错,因为临时把s转换为String对象了 添加完属性又将对象销毁了
console.log(s.hello) //输出 undefined
包装类的属性、方法都可以通过基本数据类型来调用,因为调用的时候会临时转换为对象