[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에서 이렇게 쓸 수 있습니다. :)