IT/Javascript

Javascript도 Private class 필드 선언이 가능핟!?

KeepGooing 2021. 6. 22. 13:54
반응형

Javascript class의 속성(property)은 기본적으로 public하기에 class 외부에서 읽힐 수 있다.

ES2019 이후 # prefix 추가하여 private class 필드가 가능해졌다.

#은

var, let, const와 같이 식별자 선언으로 쓰일 수 있다.

class ClassWithPrivateField {

  #privateField
	
  constructor() {
    this.#privateField = 42
    this.#randomField = 444 // Syntax error
  }
  
  #privateFunc() {
  return console.log('출력X');
  }
  
  publicFunc2() {
  return console.log('출력O');
  }
  
}

const instance = new ClassWithPrivateField()
instance.#privateField === 42 // Syntax error
instance.privateFunc(); // instance.privateFunc is not a function
instance.publicFunc2(); // 출력O 

 

위와 같이 #해쉬가 붙은 private 식별자의 경우는 class 내부에서만 접근 가능하며 

외부에서 접근 시에 내부의 public(#붙지않은)함수 혹은 생성자를 통해서 원하는 값을 호출해야한다(캡슐화, 은닉화)

 

 

참고 자료 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Classes/Private_class_fields

 

Private class fields - JavaScript | MDN

class 의 속성(property)들은 기본적으로 public 하며 class 외부에서 읽히고 수정될 수 있다. 하지만, ES2019 에서는 해쉬 # prefix 를 추가해 private class 필드를 선언할 수 있게 되었다.

developer.mozilla.org

 

반응형