javascript(对象之"."和"[]"访问的差别)
2009 年 3 月 3 日
对象的奇怪之处:
function Test(){
this.2=”test”;
}
这个对象是错误的.因为变量名不能是数字.这很好理解.但是请看下面:
var Test = {2:”test”};
利用对象直接量创建的对象确能有数字的属性.这里又要注意一点.两种访问对角的方式.”.”和”[]”.
在这里只能用Test[2]或Test[‘2’]来访问.却不能用Test.2来访问.
这说明[]和.是不等价的.其实可以把Test()对象的定义改下.
function Test(){
this[2]=”test”;
}
这样也是可行的.
针对”.”和”[]”还有一种区别.
var test1 = new Test();
test1.another = 5;
alert(test1.another); 这是可行的.
换成[]同样可行.但请看下面.
var test1 = new Test();
another = “test”;
test1.another = 5;//2
alert(test1.another); //成功
alert(test1.test);//失败..很显然在//2时并没有把another 替换成test.把”.”号改成”[]”却可以.这说明要给一个对象添加一个新的属性,而这个属性又是变量时,只能用”[]”方法.
总结:
“[]”相对”.”的优势.一是可以用变量.二是变量可以是任意值,而不局限于合法的标志符。
更科学的解决请参考<