var Atext = {} //JS定义一个结构, 就可以赋这种字符下标 Atext["a"]="a"; Atext["b"]="b"; var i=0; for(var k in Atext) i++ alert(i);
javascript数组的下标只能是数字.meizz(梅花雨)对的
Array 的下标完全可以是字符,我都用过n多次了,不信你试试。var a = new Array(); a["a"] = "A"; a["b"] = "B"; alert(a["a"] + a["b"]);不知道你们这么多星是怎么得来的。
To: Apollo47(阿波罗) 关于数组的字符下标问题, 数组是不允许字符下标的, 至于用 var a = new Array() 而可以定义字符下标不出错那是因为JS解析器对于你定义的 a 默认都是先认为它是一个对象, 一个结构体, 然后再根据详细定义划分成array bool date等类型, 而你给它赋字符型下标那你只是当它成一个object来用, 通过字符型下标扩展对象的属性而已, 所以你这种定义后取 a.length 已经取不到长度了, 同理可得, 任何用 new 新建的对象你都可以通过字符下标的形式扩展其属性: function meizz(){} //var a = new Array(); //var a = new Boolean(); //var a = new Date(); //var a = new Enumerator(); //var a = new Error(); //var a = new Function(); //var a = new Number(); //var a = new Object(); //var a = new RegExp(); //var a = new String(); var a = new meizz(); a["a"] = "A"; a["b"] = "B"; alert(a["a"] + a.b);是你自己不知其所以然罢了!!
Atext["a"]="a";
Atext["b"]="b";
var i=0;
for(var k in Atext) i++
alert(i);
a["a"] = "A";
a["b"] = "B";
alert(a["a"] + a["b"]);不知道你们这么多星是怎么得来的。
关于数组的字符下标问题, 数组是不允许字符下标的, 至于用 var a = new Array() 而可以定义字符下标不出错那是因为JS解析器对于你定义的 a 默认都是先认为它是一个对象, 一个结构体, 然后再根据详细定义划分成array bool date等类型, 而你给它赋字符型下标那你只是当它成一个object来用, 通过字符型下标扩展对象的属性而已, 所以你这种定义后取 a.length 已经取不到长度了, 同理可得, 任何用 new 新建的对象你都可以通过字符下标的形式扩展其属性:
function meizz(){}
//var a = new Array();
//var a = new Boolean();
//var a = new Date();
//var a = new Enumerator();
//var a = new Error();
//var a = new Function();
//var a = new Number();
//var a = new Object();
//var a = new RegExp();
//var a = new String();
var a = new meizz();
a["a"] = "A";
a["b"] = "B";
alert(a["a"] + a.b);是你自己不知其所以然罢了!!