我發現使用參考方法來處理ActionScript的數組賦值並不熟悉。我明白它在做什麼,但我總覺得用這種方法管理許多陣列會讓人困惑。是否有一種簡單的方法來處理數組賦值爲VALUE而不是REFERENCE的ActionScript數組?例如,如果我想將oneArray
指定爲twoArray
而未將這兩個數組永久鏈接到對方,那該怎麼做?這會工作嗎?ActionScript:如何通過VALUE而不是REFERENCE分配數組?
var oneArray:Array = new Array("a", "b", "c");
var twoArray:Array(3);
for (ii=0; ii<3; ii++) { twoArray[ii] = oneArray[ii]; }
的目的是爲了能夠改變twoArray
沒有oneArray
看到的變化。
任何意見如何通過VALUE而不是REFERENCE分配數組?
----參考----
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html
數組賦值是通過引用而不是通過值。當你將一個數組變量到另一個數組變量,都指向同一個數組:
var oneArray:Array = new Array("a", "b", "c");
var twoArray:Array = oneArray; // Both array variables refer to the same array.
twoArray[0] = "z";
trace(oneArray); // Output: z,b,c.
只是注意到了taskinoor的回答,爲了追求你朝着我的方向發展,嘿嘿,在克隆數組方面,'concat'實際上是'slice'的兩倍。 :) – xLite
謝謝!我研究了一下,發現了一些支持你的主張的鏈接。這裏是一個:http://agit8.turbulent.ca/bwp/2008/08/flash-as3-optimization-fastest-way-to-copy-an-array/ – ggkmath
這隻會做一個淺拷貝。對於數組的深層副本,您必須使用ByteArray來克隆AS3中的陣列:http://help.adobe。COM/EN_US/ActionScript中/ 3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7ee7.html – TheDarkIn1978