ActionScript3中关于数组深浅拷贝的问题

来源:互联网 发布:mac卸载dask 编辑:程序博客网 时间:2024/06/06 14:27

     在AS3中数组和对象是非基本类型,在和赋值相关的操作中都是复制引用。

      例:var a:Array=new Array(1,2,3);

             var  b:Array=new Array();

             b=a;

             这个时候b其实是持有指向a的引用。如果对a做修改,b也会被修改。这种情况的赋值是很明显的,有些时候的赋值则不这么明显。

            首先,是利用数组传参的时候需要注意,

           然后,是利用数组做为返回值的时候也需要注意,如下例

           package {
                 import flash.display.Sprite;

                 public class CopyTest extends Sprite
                 {
                        private var testarray1:Array=new Array(1,2,3);
                        private var testarray2:Array=new Array(); 
  
                        public function CopyTest(){
                                  testarray2=returnArray();  
                                  testarray1[0]=2;
                                  trace(testarray2);
                        }
  
                       public function returnArray():Array{
                               var test:Array=new Array();
                               for(var i:int=0;i<testarray1.length;i++){
                               test[i]=testarray1[i];
                                 }
                                return test;
                     }
                }
         }

原创粉丝点击