자바스크립트에서 클로저를 이용하면 private 를 구현할 수 가 있다.
더불어 자바스크립트의 헤깔리는 this를 사용하지 않아도 된다.
요즘 대형프로젝트에서 이런식으로 많이 구현한다는 소문이..
#ads_1
<script type="text/javascript">
<!--
//- Animal ----------------------------------
var Animal = function(){
//private member
var name = '동물';
//public
return {
//public member
base:'생물',
//public method
getName:function(){
return name;
},
setName:function(n){
name = n;
},
run:function(){
return name + '가 달린다';
}
}
}
//- Lion ----------------------------------
//Lion extends Animal
var Lion = function(){
var ani = new Animal();
ani.setName('사자');
//Animal에 새로운 메서드를 확장한다
ani.hunt = function(){
return ani.getName() + '가 사냥을 한다';
}
//실제 리턴되는 값은 Aniaml 이기 때문에 Lion 은 Animal을 상속한 효과를 낼 수 있다.
return ani;
}
//- Eagle ----------------------------------
//Eagle extends Animal
var Eagle = function(){
var ani = new Animal();
ani.setName('독수리');
//run 메서드 오버라이드
ani.run = function(){
return ani.getName() + '가 하늘을 난다';
}
return ani;
}
///////// 실행 /////////////
var l = Lion();
alert( l.run() ); //사자가 달린다
alert( l.hunt() ); //사자가 사냥을 한다
alert( l.name ); //접근이 안된다(private)
alert( l.base ); //동물(public)
var e = Eagle();
alert( e.run() ); //독수리가 난다
//-->
</script>
#ads_2