Private 메서드
Coddy JavaScript 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 56개 중 19번째.
JavaScript 클래스의 프라이빗 메서드를 사용하면 구현 세부 사항을 숨기고 내부 기능에 대한 외부 접근을 방지할 수 있습니다.
ES2022부터 프라이빗 메서드는 # 접두사를 사용하여 정의할 수 있습니다:
class Counter {
#count = 0;
// 프라이빗 메서드 생성
#increment() {
this.#count++;
}
// 프라이빗 메서드를 사용하는 퍼블릭 메서드
addOne() {
this.#increment();
return this.#count;
}
}Counter 인스턴스를 만들어 보겠습니다:
const myCounter = new Counter();우리는 퍼블릭 메서드를 호출할 수 있습니다:
console.log(myCounter.addOne()); // 출력: 1하지만 프라이빗 메서드에 직접 접근하려고 하면 오류가 발생합니다:
myCounter.#increment(); // 오류: 프라이빗 메서드는 클래스 외부에서 접근할 수 없습니다프라이빗 메서드는 내부 구현 세부 사항을 외부로부터 숨김으로써 캡슐화를 유지하는 데 도움이 됩니다.
챌린지
메시지를 저장하는 MessageBox 클래스가 주어집니다. 여러분의 작업은 메시지를 검증하는 #isValidMessage(text)라는 프라이빗 메서드를 추가하는 것입니다. 이 메서드는 다음과 같아야 합니다:
- 텍스트가 비어 있지 않고 100자 미만인 경우
true를 반환합니다 - 그렇지 않으면
false를 반환합니다
치트 시트
JavaScript 클래스의 프라이빗 메서드는 # 접두사를 사용하여 정의되며 클래스 내부에서만 접근할 수 있습니다:
class Counter {
#count = 0;
// 프라이빗 메서드
#increment() {
this.#count++;
}
// 프라이빗 메서드를 사용하는 퍼블릭 메서드
addOne() {
this.#increment();
return this.#count;
}
}프라이빗 메서드는 클래스 외부에서 접근할 수 없습니다:
const myCounter = new Counter();
myCounter.addOne(); // 정상 작동
myCounter.#increment(); // 에러: 프라이빗 메서드에 접근할 수 없습니다프라이빗 메서드는 내부 구현 세부 사항을 숨김으로써 캡슐화를 유지하는 데 도움이 됩니다.
직접 해보기
import { MessageBox } from './messageBox.js';
// 메시지 박스 사용하기
const box = new MessageBox();
console.log(box.setMessage("Hello")); // "Message set!" (#isValidMessage 사용)
console.log(box.setMessage("")); // "Invalid message!" (#isValidMessage 사용)
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.