※ 캡슐화란?
일반적으로 연관 있는 변수와 함수를 클래스로 묶는 작업. 얼핏보면 그냥 클래스를 만드는 작업 이라고 생각 할 수 있다.
캡슐화에는 은닉성이란게 있어서 클래스에 담는 내용 중 외부에서 접근하지 말아야 하는 프로퍼티나 메서드는 외부에서 접근하지 못하게 만들 수 있다.
※ 접근 지정자
일반적으로 객체 내부에 들어있는 메서드와 프로퍼티는 객체 내부, 객체 외부, 자식 객체에서 접근이 가능하다.
하지만 일반 객체지향 프로그래밍에서는 캡슐화를 위해 접근 지정자라는 문법을 제공한다.
접근 지정자는 public, protected, private 가 있고 접근 범위는 public > protected > private 순이다.
public - 모든 영역에서 접근 가능
protected - 자신과 자식 객체에서만 접근 가능
private - 객체 내부 접근만 가능
※ UML로 접근 지정자 표현
public : + 로 표현
protected : # 으로 표현
private : - 로 표현
※ 자바스크립트에서의 접근지정자
자바스크립트에서는 접근 지정자를 지원하지 않음. 하지만 다음과 같이 접근 지정자를 흉내 내서 사용한다.
function MyClass(){
//public
this.프로퍼티이름 = 값;
//private/protected 프로퍼티
this._프로퍼티이름 = 값;
}
//public 메서드
MyClass.prototype.메서드이름 = function(){
//기능구현
}
//private/protected 메서드
MyClass.prototype._메서드이름 = function(){
//기능구현
}
위의 예시에서 보듯 protected/private 프로퍼티와 메서드는 앞에 "_"가 붙는다.
하지만 자바스크립트는 문법적으로 접근 지정자를 지원하지 않기 때문에 "_"를 붙여도 외부에서 접근이 가능하다.
단지 무언의 약속으로 "_"가 붙어있으면 protected/private 이니까 외부에서 접근하면 안되겠구나 라는 식으로 사용한다.
'플밍 is 뭔들 > JavaScript&jQuery' 카테고리의 다른 글
[JavaScript] 자바스크립트 객체지향 프로그래밍 - 다형성 (0) | 2017.08.23 |
---|---|
[JavaScript] 자바스크립트 객체지향 프로그래밍 - 상속 (0) | 2017.08.21 |
[JavaScript] 자바스크립트 객체지향 프로그래밍 - 추상화 (0) | 2017.08.21 |
[JavaScript] 자바스크립트 객체지향 프로그래밍 기초 (0) | 2017.08.20 |
[jQuery] jQuery 플러그인 그룹 (0) | 2017.08.19 |