在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;
}
}
}