반응형
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
반응형
'IT > Javascript' 카테고리의 다른 글
날짜 표현 toISOString() 이슈 (0) | 2023.06.12 |
---|---|
javascript class 속성의 private 및 static 을 붙이면 일어나는 일 (0) | 2021.06.23 |
배열(Array)에 객체(Object)를 넣었을 때(Push) 발생하는 일 (0) | 2021.06.15 |
객체 초기화 필요성 (0) | 2021.05.21 |
reactJS란? (0) | 2021.02.14 |