说包装类之前我们先看下面这个例子
var a = 'hello';
a.name = 'world'
console.log(a.name)
答案是什么呢?
这不显而易见的吗,上面a都给已经给自己添加了一个属性名为name,值为world,输出出来肯定是world啊!
我想在你看到这段代码的时候,脑子第一时间想到的就是这个!
那么恭喜你,答错了! 值为undefined!
因为原始值不能有属性和方法,属性和方法只有对象身上有
如果强行在原始值身上添加属性的话,系统会将原始值包装成原始值类型的对象在上面添加属性,然后立即销毁
var num = new Number(123) 数字类型的对象
var str = new String('abcd') 字符串类型的对象
var boolean = new Boolean('true') 布尔类型的对象
var a = 'hello'
a.name = 'world' 系统会隐式的加上 new String(a).name = 'world' 然后delete
a.name 这个时候系统会再次 new String(a).name 但是这个new String 和上面的 new String不是同一个 所以打印出来是undefined
上面的这些隐式过程就是包装类
注意: undefinde 和 null 虽然也是原始类型,但他们俩不可以有属性,给他们添加属性会报错