JavaScript에서 개인 필드 만들기
6731 단어 beginnersjavascriptwebdev
A private field is a class property whose access is limited to within the class. These properties can not even be inherited by sub-classes.
비공개 필드를 상징화하려면 다음과 같이 작성해야 합니다.
class Employee {
constructor(salary, age) {
this._salary = salary;
this._age = age;
}
}
위의 코드 스니펫에서
'_'
및 salary
앞의 age
는 다른 프로그래머에게 이러한 필드가 비공개이며 외부에서 액세스할 수 없음을 알리는 데 사용되었습니다.기다리다! 외부에서 이 필드에 계속 액세스할 수 있습니다.
const employee = new Employee(20000, 35);
employee._salary;
// => 20000
employee._age;
// => 35
보시다시피 이 해결 방법은
_salary
및 _age
의 동작을 변경하지 않습니다. 외부에서 계속 액세스하거나 수정할 수 있기 때문입니다.간단히 말해서
_salary
및 _age
는 여전히 공개적으로 액세스할 수 있습니다.😒개인 필드
최근에 JavaScript는 개인 필드를 도입했습니다. 이제 우리는 비공개 필드를 간결하게 정의할 수 있으며 누군가 실수로 외부에서 액세스하고 수정하지 않도록 안심할 수 있습니다.
이것은 어떻게 생겼습니까?
비공개 필드를 정의하려면 다음과 같이 해야 합니다.
class Employee {
// We must declare private fields before accessing them
#salary;
#age;
constructor(salary, age) {
this.#salary = salary;
this.#age = age;
}
}
예! 그렇게 간단합니다!
#
는 사유 재산임을 나타냅니다. _
와 달리 #
는 salary
및 age
속성에 대한 외부 액세스를 제한합니다.외부에서 이러한 속성에 액세스하려고 하면
undefined
가 반환됩니다.
const employee = new Employee(20000, 35);
employee.#salary;
// => undefined
employee.#age;
// => undefined
오 좋다! 이제 의도한 동작을 달성했습니다.
내가 알아야 할 다른 사항은 무엇입니까?
음,
#
연산자를 사용하여 개인 속성을 선언할 때 주의해야 할 몇 가지 사항이 있습니다.아래 코드는 잘 작동하지만
class Employee {
constructor(salary, age) {
this._salary = salary;
this._age = age;
}
}
이 👇는 작동하지 않습니다:
class Employee {
constructor(salary, age) {
this.#salary = salary;
this.#age = age;
}
}
JavaScript에서 구문 오류가 발생합니다 👇👇
왜요?
#
를 사용하여 속성을 정의하는 경우 해당 속성을 액세스하기 전에 선언해야 합니다.즉, 공개 필드에 액세스하기 전에 반드시 선언해야 하는 것은 아니지만 비공개 필드에 액세스하기 전에 선언해야 합니다.
주요 테이크 아웃
#
를 추가하여 선언합니다(예: #privatePropertyName
). undefined
Reference
이 문제에 관하여(JavaScript에서 개인 필드 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hermitex/create-private-fields-in-javascript-3ean텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)