我需要在每个其他对象中都有一个共同对象的实例。我正在对每个子对象中的这个对象的值进行修改。
例如。我有一张瓷砖地图,一个机器人按特定顺序移动它们。每个机器人都标记着已经被他访问过的瓷砖,因为访问=真。但总的来说我不希望改变主地图......
我试图建立一个例子:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
applicationComplete="complete()">
<mx:Script>
<![CDATA[
private var array:Array = new Array( 1, 2, 3, 4);
public function complete():void
{
trace("here " + array);
var a:Array = array;
a[0] = 100;
trace("here " + array);
}
]]>
</mx:Script>
</mx:Application>
有人可以帮我理解如何按价值复制数组(不是通过引用)
答案 0 :(得分:10)
对于克隆数组,您可以使用Array.slice。
var arrCopy:Array = arrOrig.slice();
答案 1 :(得分:8)
function clone ( arr:Array ):Array
{
return arr.map( function( item:*, ..r ):*
{
return item;
} );
}
可能包含一些语法错误......
public class MyObject
{
private var arr:Array;
private var bool:Boolean;
// ...
public function clone ():MyObject
{
var obj:MyObject = new MyObject();
// clone values
obj.arr = this.arr.slice();
obj.bool = this.bool;
return obj;
}
}
答案 2 :(得分:6)