반응형
Private Class Fields
2015년 ES6 에서 처음 등장한 클래스 내에서 필드선언 시 해당 필드 변수의 좌측에 #을 붙임으로써 외부에서 해당 변수에 대한 접근을 차단하는 문법이 ES2019 에 등장했습니다.
즉, '#변수명' 으로 선언된 변수는 외부에서 직접적으로 접근할 수 없고, 해당 변수를 간접적으로 참조하여 접근할 수 있게 가능함으로써 내부 구현을 숨김 으로써 정보은닉 및 보호를 효과적으로 달성토록 도와줍니다.
class ExampleClass{
publicField = 10; // Public Class Field 입니다(내/외부 자유롭게 접근 가능).
#privaField = 5; // private Class Field 입니다(내부에서만 접근 가능.
getPrivateField(){
return this.#privaField
}
setPrivateField(number){
this.#privaField = number
}
}
// new 키워드를 사용하여 ExampleCalss 의 인스턴스 객체인 example 을 생성합니다.
const example = new ExampleClass()
//set 메서드에 접근하여 this 키워드를 통해 간접적으로 #변수의 값을 변경합니다.
example.setPrivateField(50)
// set 메서드로 변경된 #변수를 get 메서드로 접근하여 해당 값을 상수형 변수에 할당합니다.
const getPublicNumber = example.getPrivateField()
// 출력 시 변동된 값인 50이 출력됩니다.
console.log(getPublicNumber) // 50
위의 코드에서, #privateField는 Private Class Field이며, 인스턴스마다 고유한 값을 가집니다. 이 필드는 클래스 외부에서는 접근할 수 없으며, getPrivateField()와 setPrivateField() 메서드를 통해 클래스 내부에서만 접근할 수 있습니다.
반면, publicField는 Public Class Field이며, 클래스 내부와 외부에서 모두 접근 가능합니다.
반응형
'자바스크립트' 카테고리의 다른 글
[js] mosemove 와 event.offset 을 이용한 3d 입체로 움직이는 사각형만들기 (코드 저장용) (0) | 2023.07.30 |
---|---|
[JS] input file 에 등록된 이미지를 임시로 읽어오는 방법 (0) | 2023.06.09 |
[java script] Logical Assignment Operators [ ES11 (ECMAScript 2020~) ] : 논리할당연산자 (0) | 2023.03.22 |
[JS] 카멜표기법으로 표기된 문자열에 공백을 추가하는 2가지 방법 (0) | 2023.03.18 |
[javascript] 간단한 무한 스크롤 (0) | 2023.03.15 |