180bpm

AS2의 값 전달, 참조 전달 본문

Flash/AS2

AS2의 값 전달, 참조 전달

powdersnow 2013. 4. 13. 00:49


//code start
class test {
	private var o:Object = { x:0, y:0, bool:false };
	private var a:Array = [0, "a"];
	private function test() {
		trace(o.x + " / " + o.y + " / "+ o.bool);
		trace(a[0] + " / " + a[1]);
		
		changeValue(o);
		changeArray(a);
		
		var obj:Object = { y:200 };
		var obj2:Object = { y:obj.y };		//200
		var obj3:Object = obj;				//201
		
		o.y = obj.y;
		trace(o.y);							//200
		obj.y++;
		trace(o.y);							//200
		
		trace(o.x);							//1
		changeNumber(o.x);					//1
		
	}
	
	private function changeNumber($value:Number):Void 
	{
		$value++;
		trace(o.x);
	}
	
	private function changeValue($data:Object):Void {
		$data.x ++;
		$data.bool = !$data.bool;
		trace($data.x + " / " + $data.y + " / "+ $data.bool);
	}
	
	private function changeArray($array:Array):Void 
	{
		$array[0]++;
		$array[1] = "b";
		
		trace($array[0] + " / " + $array[1] + " / ");
	}
}
//code end



1. changeValue($data:Object)

함수의 파라메터가 Boolean, Number, String이 아닌것들 일 경우 참조.


2. obj2:Object = { y:obj.y }

대입 할때도 리터럴일경우엔 값 전달.

obj3:Object = obj; 이건 참조






Comments