오늘은 모던 JavaScript 튜토리얼에서 프로퍼티 getter와 setter에 대해서 공부했다. 작성한 질문은 다음과 같다.
객체 프로퍼티에는 데이터 프로퍼티와 접근자 프로퍼티가 존재한다. 데이터 프로퍼티는 말 그대로 우리가 평상시 사용하는 프로퍼티가 이에 해당하며 접근자 프로퍼티는 본질은 함수이고, 함수는 값을 획득하고 설정하는 역할을 하듯이 접근자 프로퍼티도 그러한 역할을 한다. 자세한 이야기는 다음 질문으로 이어진다.
접근자 프로퍼티는 getter와 setter 메서드로 표현하며 getter는 get으로, setter는 set으로 나타낸다. 여기서 getter 메서드는 프로퍼티를 읽으려 할 때 실행하고, setter 메서드는 프로퍼티에 값을 할당하려 할 때 실행하는 역할이다.
데이터 프로퍼티의 설명자와 접근자 프로퍼티의 설명자는 같지 않으며 접근자 프로퍼티의 설명자는 다음과 같다.
- get: 인수가 없는 함수, 프로퍼티를 읽을 때 동작
- set: 인수가 한 개인 함수, 프로퍼티에 값을 쓸 때 동작
- enumerable - 데이터 프로퍼티와 동일
- configurable - 데이터 프로퍼티와 동일
저번 장에서 객체 프로퍼티의 추가 구성 옵션인 플래그를 배우고, 이번 장에서 플래그를 이용해 getter와 setter에 대해서 공부하는 시간을 가졌다. 처음에는 저번 장과 이번 장 사이에 무슨 연관이 있는 건지 답을 내리지 못했었는데, 저번 장에서 Object.defineProperty()로 프로퍼티를 만들 때, 첫 번째 인자가 원하는 객체, 두 번째 인자가 원하는 프로퍼티, 세 번째 인자가 원하는 옵션이었고 이 세 번째 인자에 접근자 프로퍼티의 설명자 get, set을 전달하여 원하는 접근자 프로퍼티를 구현할 수 있기 때문에 연관이 있는 것이었다. 접근자와 설정자는 Java를 공부할 때 배운 용어였는데 JavaScript에서 보게 되니 신기했고, 그러면 JavaScript로 객체 지향을 한다면 이런 식으로 진행할까?라는 생각을 하게 됐다. 재밌는 내용이었다.
'TIL' 카테고리의 다른 글
TIL - 20220723 (0) | 2022.07.23 |
---|---|
TIL - 20220722 (0) | 2022.07.22 |
TIL - 20220720 (0) | 2022.07.20 |
TIL - 20220719 (0) | 2022.07.19 |
TIL - 20220718 (0) | 2022.07.18 |