javascript(对象之"."和"[]"访问的差别)

对象的奇怪之处:

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.把”.”号改成”[]”却可以.这说明要给一个对象添加一个新的属性,而这个属性又是变量时,只能用”[]”方法.

总结:

“[]”相对”.”的优势.一是可以用变量.二是变量可以是任意值,而不局限于合法的标志符。

更科学的解决请参考<>page154