[TIL/모던 자바스크립트 Deep Dive] 2023/07/17
프로퍼티는 데이터 프로퍼티와 접근자 프로퍼티로 구분 가능하다.데이터 프로퍼티(data property): 키와 값으로 구성된 일반적인 프로퍼티다.접근자 프로퍼티(accessor property): 자체적으로는 값을 갖지 않고, 다른 데이터 프로퍼티의 값을 읽거나 저장할
16장. 프로퍼티 어트리뷰트 🟢
16-3. 데이터 프로퍼티와 접근자 프로퍼티 🟡
프로퍼티는 ``데이터 프로퍼티`와 `접근자 프로퍼티``로 구분 가능하다.
데이터 프로퍼티 🟣
데이터 프로퍼티는 value, writable, enumerable, configurable 등과 같은 '프로퍼티 어트리뷰트'를 갖는다. 앞서 프로퍼티 어트리뷰트는 "프로퍼티에 대한 기본 세팅값이다." 정도로 정리한 바 있다. 관련해서 예제 코드를 살펴봤다.

value 프로퍼티의 값은 'Lee'이고, 나머지 프로퍼티의 값은 모두 true다. 달리 표현하면, 프로퍼티 어트리뷰트 [[value]]의 값은 'Lee'이고, 프로퍼티 어트리뷰트인 [[writable]], [[enumerable]], [[configurable]]의 값은 true이다.
이처럼 프로퍼티가 생성될 때 [[value]]의 값은 프로퍼티 값으로 초기화되며, [[writable]], [[enumerable]], [[configurable]]의 값은 true로 초기화된다. 프로퍼티를 동적 추가해도 마찬가지이다.

접근자 프로퍼티 🟣
접근자 프로퍼티(accessor property)는 자체적으로는 값을 갖지 않고, 다른 데이터 프로퍼티의 값을 읽거나 저장할 때 사용하는, 접근자 함수로 구성된 프로퍼티다.
일단 정의부터가 어렵다.
접근자 프로퍼티에는 [[Get]], [[Set]], [[enumerable]], [[configurable]] 등이 있다. 접근자 함수는 Getter/Setter 함수라고도 부른다. 코드를 살펴봤다.


잠깐 🟣
책에서 설명하는, 접근자 프로퍼티에 대한 개념이 이해되지 않았다. 왜 그럴까 곰곰이 생각해보니, 프로퍼티를 너무 지엽적으로 인지하고 있었다.
"프로퍼티는 '객체 내부에 저장된 값 또는 함수'다."라는 정의로 접근해야 이해가 가능해진다. 최소한 지금 파트를 학습할 때에는 객체는 프로퍼티의 container일 뿐이다.
위 코드를 다시 보면, person에 할당된 객체는, 데이터 프로퍼티와 접근자 프로퍼티를 담고 있는 container이다.

그러니까, 원래 알고 있던 'key:value' 형태도 프로퍼티이고, get 또는 set 접근자 함수로 구성된 fullName도 프로퍼티이다.
18번 줄은 이해에 어려움이 없으니 설명을 넘어간다.
22번과 23번은 setter에 관한 코드이다. 접근자 프로퍼티(=fullName)를 통해 값을 '저장'하려고 시도하면 setter가 호출된다. 따라서 공백을 기준으로 각각 firstName과 lastName에 Heegun과 Lee가 저장된다. 그렇기에 person을 콘솔에 찍어보면 변경된 firstName과 lastName, 그리고 fullName에 대한 정보가 반환된다.
27번 코드는 getter에 관한 코드이다. 값을 참조할 때(=읽을 때) 호출되는 함수이고, 콘솔에는 getter 함수의 내용에 맞게 firstName과 lastName이 반환된다.(9번 코드 참고)
31번 코드는 앞서 살펴본 것처럼, value는 Heegun으로 초기화되고 나머지는 true로 초기화된다. 데이터 프로퍼티이기 때문이다.
35번 코드에서는, 접근자 프로퍼티에 대한 console이기 때문에 자체적으로는 값을 갖지 않는다는 점을 확인할 수 있다. 접근자 함수로 구성되어 있다는 점은 확인할 수 있다.
오늘 총정리


내일 🟣
접근자 프로퍼티에 대한 내용이 조금 남아있으니 먼저 정리한다. 정리가 끝난 후 '16-4: 프로퍼티 정의'를 학습한다.
번아웃 비슷한 게 왔었는데, 불씨에 기름을 부으면 꺼진다는 사실을 잊고 살았다. 불씨를 조심스럽게 찾아서 호호 불어줘야 한다. 누군가의 부드러운 부채질도 당연히 도움이 된다. "조심조심, 하지만 매일매일"
More to read
프론트엔드와 백엔드 사이
HTTP 상태 코드는 프론트엔드에서 백엔드로 보냈던 요청의 수행 결과를 의미하는 일종의 약속이며, API를 구성하는 핵심 요소 중 하나입니다. 상태 코드와 관련하여, 백엔드는 잘 모르는 프론트엔드의 슬픈 사정이 있습니다.아래는 요청이 실패했음에도, 백엔드에서 상태 코드
JWT토큰 관리 방식 톺아보기
0. 들어가며 🎯 서비스에 접근하려는 사용자가 누구인지 확인하는 과정을 사용자 인증이라고 합니다. 인증된 사용자에게 주어진 권한을 확인하는 작업은 인가라고 부릅니다. 이번 글에서는 인가는 다루지 않습니다. 사용자 인증에는 많은 방식이 있지만, 오늘은 세션 인증 방
A2AA2A / MCP 멀티 에이전트 오케스트레이션
0. 들어가며 ✍️ Google for Developers에, 레스토랑 공급망 시나리오로 엮은 6대 프로토콜(MCP, A2A, UCP, AP2, A2UI, AG-UI)에 대한 가이드가 게시된 이후, MCP와 A2A부터 구현해 보는 것이 좋을 것 같다는 생각이 들었습니