<script>
function userLogon(n,username,status,logontime)
{
this.flag=n;
this.user=username;
this.status=status;
this.logontime=logontime;}
function showarray()
{
var arrtest=new Array(2);
arrtest[1]=new userLogon(0,"LI","A","2003-12-18 21:32:33");
alert(arrtest[1].user);
}
showarray();
</script>
function userLogon(n,username,status,logontime)
{
this.flag=n;
this.user=username;
this.status=status;
this.logontime=logontime;}
function showarray()
{
var arrtest=new Array(2);
arrtest[1]=new userLogon(0,"LI","A","2003-12-18 21:32:33");
alert(arrtest[1].user);
}
showarray();
</script>
function userLogon(n,username,status,logontime)
{
this.flag=n;
this.user=username;
this.status=status;
this.logontime=logontime;
return this;
}
function showarray()
{
var arrtest=new Array();
var user=new userLogon;
for(var i=1;i<=3;i++){
user["flag"]=i;
user["user"]="Li";
if(i%2==0)user["status"]="A"; else user["status"]="C";
user["logontime"]="2003-12-18 21:32:33";
// user=new userLogon(i,"LI","A","2003-12-18 21:32:33");
arrtest=arrtest.concat(user)
}
for(var i=0;i<=2;i++){
alert(arrtest[i].flat);}
}如果把showarray()改成下面这样写才正确:
function showarray()
{
var arrtest=new Array();
var user=new userLogon;
var flag=0;
var user="";
var status="";
var logontime="";
for(var i=1;i<=3;i++){
flag=i;
user="Li";
if(i%2==0) status="A";else status="C";
logontime="2003-12-18 21:32:33";
user=new userLogon(flag,user,status,logontime);
arrtest=arrtest.concat(user)
}
for(var i=0;i<=2;i++){
alert(arrtest[i].flat);}
}
请大家帮我分析一下原因,因为如果数组中每个属性都要经过运算判断后赋值,且数组属性好多时,第一种写法要方便好多,不用重新定义数组的属性变量.
arrtest[i] = arrtest.concat(user); 实际上js的数组用法和java有些类似: 数组变量名[索引] = 一个对象
在js中没有Vector, Hashtable, List等数据结构类,所以它的数组自由度很大,
也就是所谓的稀疏数组。js中可以通过数组加对象嵌套构造出各种复杂的数据结构。
要不然输出的时没赋值的会变成undifined的。
应该改为:arrtest[i-1] = arrtest.concat(user); 有问题可以通过msn和我联系:[email protected] :)