배열 복제

Flash Player 9 이상, Adobe AIR 1.0 이상

Array 클래스에는 배열의 복사본을 만들기 위한 메서드가 내장되어 있지 않습니다. 인수 없이 concat() 또는 slice() 메서드를 호출하여 배열의 단순 복사본 을 만들 수 있습니다. 단순 복사본에서 원래 배열에 객체인 요소가 있는 경우 객체는 복사되지 않고 객체에 대한 참조만 복사됩니다. 복사본은 원래 배열과 동일한 객체를 가리킵니다. 객체에 대한 모든 변경 사항은 두 배열에 모두 반영됩니다.

전체 복사본 에서는 원래 배열에 있던 객체도 모두 복사되어 새 배열이 원래 배열과 동일한 객체를 가리키지 않습니다. 전체 복사본을 작성하려면 둘 이상의 코드 행이 있어야 하며 일반적으로 함수를 작성해야 합니다. 이 함수는 전역 유틸리티 함수나 Array 하위 클래스의 메서드로 작성될 수 있습니다.

다음 예제에서는 전체 복사본을 작성하는 clone() 함수를 정의합니다. 알고리즘은 일반적인 Java 프로그래밍 기술을 사용합니다. 이 함수는 배열을 ByteArray 클래스 인스턴스로 직렬화하고 배열을 새 배열로 다시 읽어 전체 복사본을 만듭니다. 이 함수는 객체를 허용하므로 다음 코드와 같이 인덱스 배열 및 연관 배열 모두에 사용할 수 있습니다.

import flash.utils.ByteArray; 
 
function clone(source:Object):* 
{ 
    var myBA:ByteArray = new ByteArray(); 
    myBA.writeObject(source); 
    myBA.position = 0; 
    return(myBA.readObject()); 
}