오늘은 모던 JavaScript 튜토리얼에서 프로퍼티 플래그와 설명자(https://ko.javascript.info/property-descriptors)에 대해서 공부했다. 작성한 질문은 다음과 같다.
객체 프로퍼티는 키-값 쌍으로 이루어져 있는데 여기서 플래그라는 보이지 않는 프로퍼티 추가 구성 옵션이 존재한다. 다음과 같은 속성이 존재한다.
- writable: boolean 형태이며, 값이 true일 경우 프로퍼티의 값을 수정할 수 있다. false일 경우 읽기만 가능하다.
- enumerable: boolean 형태이며, 값이 true일 경우 반복문을 사용해 나열할 수 있다. false일 경우 반복문을 사용해 나열할 수 없다.
- configurable: boolean 형태이며, 값이 true일 경우 프로퍼티 삭제나 플래그 수정이 가능하다. false일 경우 프로퍼티 삭제와 플래그 수정이 불가능하다.
configurable 플래그를 false로 설정하면 절대 다시 돌아갈 수 없다. configurable: false가 만들어내는 구체적인 제약사항은 다음과 같기 때문이다.
- configurable 플래그를 수정할 수 없음 - 이 때문에 configurable: true로 절대 돌아갈 수 없는 것이다.
- enumerable 플래그를 수정할 수 없음
- writable: false를 true로 수정할 수 없음(true를 false로 변경하는 것은 가능함)
- 접근자 프로퍼티 get/set을 변경할 수 없음 (생성은 가능함)
이런 특징을 이용하면 영원히 변경할 수 없는 프로퍼티를 만들 수 있다.
플래그라는 옵션은 이번에 처음 알게 되었으며 키-값 쌍 이외에도 다른 값이 있구나, 또 다른 것들도 있을 거 같다는 생각이 들었다. 이러한 설정은 언제 사용하면 좋을까?라는 생각을 했는데 회원 정보에서 이름같이 쉽게 변경되지 않는 정보를 writable: false로 하는 생각을 했었다. 근데 또 그렇게 해서 개명을 하게 된다면 개명으로 인한 정보 변경에 소요되는 시간이 더 많이 들 것이기 때문에 무턱대고 사용할 수 없는 조심해야 할 설정들이라고 느꼈다.
'TIL' 카테고리의 다른 글
TIL - 20220722 (0) | 2022.07.22 |
---|---|
TIL - 20220721 (0) | 2022.07.21 |
TIL - 20220719 (0) | 2022.07.19 |
TIL - 20220718 (0) | 2022.07.18 |
TIL - 20220717 (0) | 2022.07.17 |