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에서 이렇게 쓸 수 있습니다. :)
'Programming > javascript' 카테고리의 다른 글
javascript : string 은 immutable (0) | 2014.07.02 |
---|---|
javascript : [오늘의 명심] (0) | 2013.01.18 |
[javascript] 배열복사(passing by value) 편하게 하기. (2) | 2012.08.17 |
[javascript] self.close(); 로 브라우저를 못닫는 경우. (0) | 2012.07.24 |
[javascript] class object를 원소로하는 array의 sort (0) | 2012.07.02 |