외부에서 특정 인스턴스의 프로퍼티에 대한 접근 수준을 제한한다.
c++, JAVA와 같이 class개념을 갖는 객체지향 언어들의 접근제한자와 비슷하다. 다만 JavaScript 내에서의 class의 성격은 다른 문법들과 다르기 때문에 접근제한자 또한 비슷하면서도 다르다.
객체지향 프로그래밍의 특징 중에 캡슐화
가 있다. 캡슐화
는 객체의 속성과 메서드를 하나로 묶어 공통된 틀을 만든다. 이는 중복되는 코드를 여런 작성하지 않게 해준다. 그리고 일부 데이터는 외부에서 접근할 수 없도록 하여 함부로 조작할 수 없게 한다. 이를 은닉화
라고 한다. 이를 통해 사용자는 구체적 동작 방식을 알 필요도 없고(추상화
), 조작할 수도 없다.(은닉화된 데이터의 무결성이 보장된다
)
접근 제한자는 이 중 은닉화
를 위해 존재한다고 볼 수 있다.
<
public>
- 어디에서나 접근할 수 있다. default 접근 수준이다.
<
protected>
- 이 클래스와 서브클래스의 인스턴스에서만 접근할 수 있다.
- 매개변수의 경우 자동으로 this에 할당한다.
<
private>
- 이 클래스의 인스턴스에서만 접근할 수 있다. (서브클래스 X)
- 마찬가지로 매개변수는 자동으로 this에 할당된다.