javascript对象的问题,求大神解释
var a=new Array();
a[0]=2;
a[0].x=1;
alert(a[0].x)//显示undefined
var a=new Array();
a[0]=new Number(2);
a[0].x=1;//或者a[0].x=new Number(1);
alert(a[0].x)//显示1
javascript不是完全面向对象么?
------解决方案--------------------var a=new Array();
a[0]=2
alert(typeof a[0])/////number
a[0]=new Number(2);
alert(typeof a[0])//object
a[0].x=1;
alert(a[0].x)
类型不一样,知道了吧。。直接复制是值类型,new是引用类型,object,object才有自定义属性
------解决方案--------------------
因为
1)你很难区分 这个是小数点 还是 对象属性点
1.1 这里的点是小数点
1.x 这里的点是?对象子属性符号?
上面是 联想 呵呵
主要是 和性能有关把
( 是直接看我手上有多少钱 还是用手从裤兜里拿出钱看我有多少钱?)
对象类型的话 是一个复杂嵌套结构 对于对象的引用是需要指针的
值类型就是一个简单的结构 值的引用? 引用本身就是值
如果 变量a 是一个(指向一个) object 那么 a的实际值 是一个数字 这个数字代表 一个地址 这个地址开始才是这个object的存放位置
如果 变量a 是一个 数字 那么 a的实际值 就是这个数字(这个情况下没办法添加子属性 要么a变成一个对象 好吧那么数值计算的性能又麻烦了)