• 使用flex Array碰到的问题(原创)


    前日,一个朋友使用flex Arra时碰到了一个问题,百思不得其解。问题是大概是这样的:
      var arr1:Array = new Array();
      var arr2:Array = new Array();
      for(var i:int = 0; i < n; i++)//for 循环
      {
        arr1 = getArray(i);//返回一个array
        arr2[i] = arr1;//(*)
      }
      trace(arr2);//输出结果每行都是最后一个arr1
      其实这个问题主要是这位朋友习惯使用C++而造成的。在C++中,我们d定义了一个变量,改变它某一时刻的值,并不会影响到他以前保存的值。但在flex中不一样。flex对于除基础类型(int,Boolean之类的)之外,都是按引用操作。所以(*)这个步骤,其实每次都是往arr2中放入arr1的一个内存地址的拷贝(暂时先这么说吧,我也不知道flex内部的机制是否这样,大概是这个意思)。因此,arr2的每一行指向的其实都是同一个内存,当循环结束后,当然arr2中的内容都同最后一个arr1一样。
      了解了这个缘由,那么便很容易解决了。
       var arr1:Array;
      var arr2:Array = new Array();
      for(var i:int = 0; i < n; i++)//for 循环
      {
        arr1 = new Array();//每次new一个arr1
        arr1 = getArray(i);//返回一个array
        arr2[i] = arr1;//(*)
      }
                                      David Cai 09-08-16早 于金山公司
  • 相关阅读:
    页面时如何加载的
    Node的运行
    js 和css 的压缩工具。
    js 判断ie
    208-Servlet初始化是什么?
    207-乐观锁与悲观锁?
    206-navicat一直连接不上mycat是怎么回事?
    205-springboot如何集成reids?
    204-jdbc如何连接数据库
    203-全局变量char的默认值是多少?
  • 原文地址:https://www.cnblogs.com/xingluzhe/p/1547083.html
Copyright © 2020-2023  润新知