Published on

캡슐화

캡슐화는 객체 지향 프로그래밍에서 다음 2가지 측면이 있다.

  • (1) 객체의 속성(data fields)과 행위(methods)를 하나로 묶고

  • (2) 실제 구현 내용 일부를 외부에 감추어 은닉한다.

C++언어에서는 은닉하는 방법으로 접근지정자를 사용한다. (private, protected, public)

Javascript의 캡슐화

  • 클래스내의 멤버 변수들을 외부로부터 숨기는 방법
(function() {
    var age = 26; //지역변수 - 외부함수가 끝나면 사라진다.

    return {
        getAge : function(){
            return age;
            //외부함수내의 내부함수 getAge가 지역변수 age를 참조한다.
            //이 내부함수 getAge 객체가 반환되면,
            //내부함수는 외부함수의 지역변수에 자유롭게 접근 가능하다.
        }
    }
}();
  • 함수내에 지역변수 age를 참조하고있는 다른 내부함수들이 존재하고,(getAge(), setAge()와 같은..) 이 내부함수가 외부로 리턴되면,

    지역변수 age는 표면적으로는 사라지지만, 내부함수는 계속해서 접근할 수 있게 된다. (클로져)

    그렇기 때문에 getAge와 setAge로 지역변수인 age를 제어할 수 있게 되는 방식이다.