2010-04-09 4 views

답변

1

나는 당신이 여기서 무엇을하고 싶은지 잘 모르겠습니다.

매개 변수는 실제로 전달됩니다. 개체의 경우에는 (그리고 여기에 객체에 의해 참조 의미론이있는 모든 것을 의미합니다. 즉, 부울, 숫자, 정수, 문자열 등을 제외한 모든 것), 참조는 값에 의해 전달되므로 함수에 참조가 있습니다. 원래 개체가 아니라 개체의 복사본에 대한 참조입니다.

개체를 역 참조하고 일부 값을 변경하거나 그것에 대한 메서드를 호출하려면 괜찮을 것입니다. 작동하지 않는 유일한 방법은 참조 자체를 변경하는 것입니다. 즉, 당신은 그것을 null 또는 해 새로운 객체를 할당 할 수 없습니다 :

function dereferenceParam(param:Object):void { 
    param.someInt = 4; 
    param.someMethod(); 
} 

function reassignParam(param:Object):void { 
    param = null; 
    // or 
    param = new Object(); 
} 

dereferenceParam()를 대부분의 사람들이 예상대로 작동합니다 reassignParam는하지 않습니다.

이제는 마지막 단락별로 생각할 수있는 유일한 "문제"는 내가 가지고있는 배열에서 검색 개체를 제거하거나 null을 제거하려는 것입니다. 이 경우 배열을 반복하는 것이 유일한 방법 일 것입니다.

+0

검색을 onServerResponse에 전달하고 싶습니다. – Shawn

+0

예, 폐쇄 방법을 사용하면 효과가 나타나지 않습니다. 아마 배열에서 검색 개체를 제거하려는 경우 아마도 배열에 액세스해야합니다. 그렇지 않으면 얻을 수있는 검색 매개 변수는 원본 개체에 대한 참조 사본입니다. 참조를 사용하는 한 원래 객체에 액세스 할 수 있습니다. 따라서 검색 개체의 값을 변경하거나 메서드를 호출하려면 문제가 없어야합니다. –

+0

아니요, 참조 복사본이 아닌 개체의 복사본에 대한 참조를 가져옵니다. – Shawn

0

개체의 복사본을 어떻게 받았다고 생각하십니까?

제 생각에 (비 내장형) 객체는 거의 값으로 복사되지 않습니다. 유일한 예외는 Event 개체로 발송되지만 명시 적으로 문서화됩니다.