<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>

解决方案 »

  1.   

    谢谢,我也弄不明白,今天试一下不报错了,哈哈,真怪呢!不好意思,我程序中要用到动态数组,我发现如果按下面这样写的话,最后得到的结果是所有的都是最后一条的值:
    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);}
    }
    请大家帮我分析一下原因,因为如果数组中每个属性都要经过运算判断后赋值,且数组属性好多时,第一种写法要方便好多,不用重新定义数组的属性变量.
      

  2.   

    把for 循环中的  arrtest=arrtest.concat(user) 改为
    arrtest[i] = arrtest.concat(user); 实际上js的数组用法和java有些类似: 数组变量名[索引] = 一个对象
    在js中没有Vector, Hashtable, List等数据结构类,所以它的数组自由度很大,
    也就是所谓的稀疏数组。js中可以通过数组加对象嵌套构造出各种复杂的数据结构。
      

  3.   

    如果写成这样,是不是要更新i使它加1。
    要不然输出的时没赋值的会变成undifined的。
      

  4.   

    当然要了,但在for循环中已经i++了,由于我的粗心,arrtest[i] = arrtest.concat(user); 
    应该改为:arrtest[i-1] = arrtest.concat(user); 有问题可以通过msn和我联系:[email protected] :)