您的位置:首页 > Web前端 > JavaScript

关于js中关联数组的使用问题

2011-05-09 14:16 417 查看



两个例子

function test1() {

var array1 = { "A":"a","B":"b","C":"c" };

for (key in array1) { // 能够正常输出数组

alert('=1=1=====' + key);

alert('=1=2=====' + array1[key]);

}

}

function test2() {

var array2 = new Array();

array2["A"] = "a";

array2["B"] = "b";

array2["C"] = "c";

for (key in array2) { // 在输出正确数组前,会先输出许多函数信息

alert('==1=====' + key);

alert('==2=====' + array2[key]);

}

}

在test1中直接定义数组能够正常输出;而在test2中用Array 定义数组则会输出很多函数信息

后来发现:

第一个例子并不是数组而是创建了一个对象(javascript 里 {}不能称作数组,应该属于object类型
),

循环输出的是这个对象的属性和值;

第二个例子是数组但是你把他当成一个对象来使用的

array2["A"]="a"其实就是array2.A="a";

而new Array 出来的是Array类型。

因为在数组的方括号里面只能填数字,所以它只是给array2添加了3个属性

分别是

array2.A="a"

array2.B="b"

array2.C="c"

虽然javascript 中任何类型都是object,但是Array 的实例中已经带有很多和array相关的实例方法。

例如 indexOf/slice/。。。。

而且循环都是用in来循环的,in的循环回输出这个对象的所有自定义属性

因此,才会发生test2中输出函数信息的情况。。。

鉴于这种情况,在定义时应尽量使用

var array2 = {};或var array2 = new Object(); 的方式!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: