先上代码:
这里会打印什么呢?
undefined(自问自答好无聊)
那么为什么会打印成undefined呢?
...(自问自懵也好无聊)
现在开始听我解释
先看代码
var a = 'dong';
a.charAt(0) //a是一个基本类型,为什么也可以拥有好多方法和属性呢?
如果回答是
js里万物皆对象,对象就有属性和方法
那么这个回答只能给60分.
标准答案神奇妙味大讲师给出了回答
包装对象: 基本类型都有自己对应的包装对象
上文里a.charAt(0) 执行到这句话的时候, 基本类型会找到对应的包装对象类型,然后包装对象把所有的属性和方法都给了基本类型,然后----包装对象消失----
所以回到最上面的代码图
执行到
a.name = 'dong'
这句话的时候, 基本类型要添加一个属性,这时候基本类型会在对应的包装类型上添加该属性. 但是把这个属性给了包装对象后,包装对象消失掉了.执行
console.log(a.name)
的时候, a这个基本类型又重新创建了一个新的包装对象,而这个包装对象上是没有刚添加的那个属性的.