Menu
Coddy logo textTech

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(); // 오류: 프라이빗 메서드는 클래스 외부에서 접근할 수 없습니다

프라이빗 메서드는 내부 구현 세부 사항을 외부로부터 숨김으로써 캡슐화를 유지하는 데 도움이 됩니다.

challenge icon

챌린지

메시지를 저장하는 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 사용)
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨