基础类型的点操作原理
var a = "hello";
console.log( a.charAt(1) );//e
console.dir( a ); //hello, a只是一个基础数据类型
//undefined null除外的基础类型在执行 . 操作的时候,真正操作的不是这个基础数据类型,而是它所对应的包装对象
//a.charAt(1) ===> new String(a).charAt(1)
//undefined null类型的无论如何都不能点操作
基础数据类型不能存值,复杂数据类型才能存值
var a = "hello";
a.x = 10;
console.log( a.x );//undefined
/*
a.x ===> new String(a).x = 10
产生一个包装对象a,并添加属性x = 10
new String(a)确实存了10,但当这步执行完这个包装对象就被销毁了
console.log( a.x );
new String(a).x
当前的包装对象new String(a)是新产生的,没有x的值,所以是undefined
*/