본문 바로가기

Programming/javascript

[javascript] 기본형(value)을 passing by reference로 통신하기.

javascipt 역시도 OOP 개념이 잘 적용되어있습니다.

(타입에 대한 강제성이 없다보니 코딩이 빠른만큼, 그만큼 불안하지만 말이죠^^;)


function plus(arg){

arg = arg+1;

}


위와 같이 파라미터에 값만 1을 추가하는 함수가 있다고 합시다.


<script type="text/javascript">

function plus(arg){

arg = arg+1;

}

var literal = 1;

plus(literal);

alert(literal);

</script>


위와 같은 경우엔 alert으로 1을 출력합니다.

literal 이 value 이기 때문에 passing by value 가 된거죠.


그런데 이런 경우말고, function을 이용해서 data를 변조하고 싶은 경우도 있죠?

그럴땐 object화 하여야합니다.

그리고 함수도 살짝 손봐야겠지요, parameter가 오브젝트이니 그에 맞게 말이죠.

<script type="text/javascript">

function plus(arg){

   arg.literal = arg.literal+1;

}

LiteralObj = function(literal){

    this.literal = literal;

}

var literalObj = new LiteralObj(1);

plus(literalObj);

alert(literalObj.literal);

</script>

위와 같은 경우엔 alert으로 2를 출력합니다.


학교에서 배웠던 passing by reference, passing by value.

javascript에서 이렇게 쓸 수 있습니다. :)