JavaScript에 Private이 있다?
없는거 아니에요?
저도 그런줄 알았는데 알고 보니 stage 4 proposal이 었습니다.
쨔자잔!
class ClassWithPrivateField {
#privateField;
constructor() {
this.#privateField = 42;
this.#undeclaredField = 444; // Syntax error
}
#privateMethod() {
return 'hello world';
}
getPrivateMessage() {
return this.#privateMethod();
}
}
const instance = new ClassWithPrivateField()
instance.#privateField === 42; // Syntax error
console.log(instance.getPrivateMessage());
class 문법을 사용할때 필드나 메서드 앞에 해시태그를 붙여주면 된다.
예전에는 오또캐 구현 했나요?
옛날에도 private이 필요하긴 했을 텐데 어떻게 했는지 간략하게 알아보자.
언더스코어 컨벤션
function Constructor() {
this._privateField = 'cant touch this';
this.publicField = 'touch this'
}
멤버 명에 언더스코어를 추가하면 외부에서 접근하면 안된다는 컨벤션이 흔히 사용 되었다. 가독성도 좋고 간단하지만, 실제로 private 않다는 문제가 있다.
클로저로 은닉
function Constructor() {
const privateField = 'cant touch this';
this.publicField = 'touch this';
};
const instance = new Constructor();
instance.privateField // undefined
다소 헷갈리지만, 클로저를 통해 은닉할 수 있다. 클로저의 대표적인 활용 방법이지만 다소 헷갈리고 this까지 더해지면 가독성이 다소 낮아진다고 생각한다.
Author And Source
이 문제에 관하여(JavaScript에 Private이 있다?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mgm-dev/JavaScript에-Private이-있다저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)