자바스크립트 접근자



자바스크립트 private, public, privileged 메서드


Private, Public, Protected 접근자는 오늘날 대부분 객체지향언어에서 기본적으로 제공하고 있는 기능입니다.

자바스크립에서도 이와 같은 형태는 아니지만, 접근자 구현이 가능합니다.

아래는 자바스크립트에서 구현 가능한 접근자(Private, Public, Privileged)에 대한 설명 및 예제입니다.




1. Private 접근자

Private 변수 및 메서드는 다른 Private 변수 및 메서드 와 Privileged 메서드 에서만 접근 가능하며, 객체 내부에서만 접근 가능합니다.
 



  1. function Private(){
  2.    
  3.     // private 변수
  4.     var p1 = 'p1';
  5.  
  6.     this.p2 = 'p2';
  7.  
  8.     return this;
  9. }
  10.  
  11. // public 메서드
  12. Private.prototype.getP2 = function(){
  13.     return this.p2;
  14. }
  15.  
  16. alert(new Private().p1); // undefined(정의되지 않았음)
  17. alert(new Private().getP2()); // p2




2. Public

Public 변수 및 메서드는 해당 객체 컨테스트 어디서나 접근 가능한 객체 맴버 입니다.


  1. function Public(){
  2.    
  3.     // public 변수
  4.     this.p2 = 'p2';
  5.  
  6.     return this;
  7. }
  8.  
  9. // public 메서드
  10. Public.prototype.getP2 = function(){
  11.     return this.p2;
  12. }
  13.  
  14. alert(new Public().getP2()); // p2




3. Priviledge

Priviledge 변수 및 메서드는 Private 변수에 접근 가능한 Public 객체 맴버입니다.


  1. var Priviledge = (function(){
  2.  
  3.     // private
  4.     var p1 = 'p1';
  5.  
  6.     function t(){
  7.         return this;
  8.     };
  9.  
  10.     t.prototype.get = function(){
  11.         return p1;
  12.     };
  13.  
  14.     return t;
  15.  
  16. })();
  17.  
  18.  
  19. alert(new Priviledge().get()); // p1




Priviledge 구현 방법은 사용성과 효율성에 좋지 않은 방법입니다.

예를 들면 보통 객체 생성 시 재사용 가능한 메서드 맴버 그룹은 프로토타입 맴버에 추가하는 것이 보통이며 효율적입니다.

하지만 이를 구현하기 위해서는 반드시 인스턴스 맴버에 재사용 가능한 메서드를 추가시켜야 하기 때문입니다.