플밍

클로저를 이용한 private 와 상속의 구현 예제 본문

프로그래밍/Ajax / Javascript

클로저를 이용한 private 와 상속의 구현 예제

너구리안주 2014. 7. 23. 08:52

자바스크립트에서 클로저를 이용하면 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

Comments