构造函数不同,假如通过prototype为Array扩充一个方法后,object就不能用
<script language=javascript>
var rows = new Array; rows[129] = new Array(129,7,'建筑' );
rows[108] = new Array(108,13,'通信工程' );
alert(rows.constructor)
var rows2 = new Object; rows2={
'129' : {'id':'129', 'pid':'7', 'title':'建筑' },
'108' : {'id':'108', 'pid':'13', 'title':'通信工程' }
}
alert(rows.constructor)
</script>
<script language=javascript>
var rows = new Array; rows[129] = new Array(129,7,'建筑' );
rows[108] = new Array(108,13,'通信工程' );
alert(rows.constructor)
var rows2 = new Object; rows2={
'129' : {'id':'129', 'pid':'7', 'title':'建筑' },
'108' : {'id':'108', 'pid':'13', 'title':'通信工程' }
}
alert(rows.constructor)
</script>
lz的问题应该与数组的长度没有关系,因为数组是动态的
rows[107]没有分配到内存空间
用对象存储的话,实际上使用的也是数组的模式(key--value),
如果从应用的角度看,用对象存储要好一些~
所以我又怀疑这样用Array会带来内存的无用开销。迷惑中。
看一下这个测试,你就应该没有什么担忧了<script>
var rows = new Array; rows[129] = new Array(129,7,'建筑' );
rows[108] = new Array(108,13,'通信工程' );
rows['gu1dai'] = 'abcd'; //注意这里并没有改变rows.length的值document.write('rows.length:'+rows.length+'<br>');i = 0;
for(v in rows) {
document.write('['+i+']'+v+'=>'+rows[v]+'<br>');
i++;
}
</script>
还有一个疑问
不知道用Object存储数据会不会带来额外的内存开销。用Object存储数据可以使用key,好处很多。
就是不知道每行一个
{'id':'129', 'pid':'7', 'title':'建筑' }
这会不会多占内存。