TIL | this._와 private의 차이점

bubblegum·2024년 3월 1일
0

Today I learn(TIL)

목록 보기
30/84
post-thumbnail

JavaScript에서 class 키워드를 사용하여 클래스를 정의할 때 this._private 키워드는 둘 다 정보 은닉과 관련이 있지만 약간 다른 방식으로 동작합니다.

  1. this._:
    • this._는 관례적으로 private 멤버 변수를 나타냅니다. 즉, 다른 클래스나 외부에서 직접 접근하지 않는 것으로 간주되지만, JavaScript에서는 엄격한 의미의 private이 아니라 외부에서도 접근할 수 있습니다.
    • _로 시작하는 변수는 개발자 간의 약속으로, 해당 변수나 메서드에 직접 접근하지 말아야 함을 나타냅니다. 이는 접근을 시도할 때 경고를 주거나 문서화할 수 있는 등의 추가적인 조치가 필요합니다.

예를 들어:

class Example {
  constructor() {
    this._privateVariable = 10;
  }

  getPrivateVariable() {
    return this._privateVariable;
  }

  setPrivateVariable(value) {
    this._privateVariable = value;
  }
}

const example = new Example();
console.log(example.getPrivateVariable()); // 10
example.setPrivateVariable(20);
console.log(example.getPrivateVariable()); // 20
  1. private 키워드:
    • private 키워드는 ECMAScript 2022의 클래스 필드 선언 문법의 일부로 도입되었습니다. 이를 사용하면 클래스 내에서만 접근할 수 있는 실제 private 멤버를 정의할 수 있습니다.
    • private 키워드로 정의된 멤버는 클래스 외부에서 접근할 수 없으며, 직접적인 접근 시 SyntaxError가 발생합니다.

예를 들어:

class Example {
  #privateVariable = 10;

  getPrivateVariable() {
    return this.#privateVariable;
  }

  setPrivateVariable(value) {
    this.#privateVariable = value;
  }
}

const example = new Example();
console.log(example.#privateVariable); // SyntaxError: Private field '#privateVariable' must be declared in an enclosing class

따라서, this._는 일종의 관례적인 private 변수이지만 JavaScript에서 진정한 private이 아니며, private 키워드는 실제로 클래스 내부에서만 접근할 수 있는 private 멤버를 정의하는 데 사용됩니다.

profile
황세민

0개의 댓글

관련 채용 정보