[javascript] 프로퍼티 디스크립터와 객체 내부 동작 설명
자바스크립트에서 객체는 프로퍼티를 가지고 있습니다. 이 프로퍼티들은 객체의 상태를 나타내는 값이라고 볼 수 있습니다. 자바스크립트에서 프로퍼티의 동작 방식을 이해하기 위해서는 프로퍼티 디스크립터와 객체의 내부 동작을 알아야 합니다.
프로퍼티 디스크립터
객체의 각 프로퍼티는 프로퍼티 디스크립터를 가지고 있습니다. 프로퍼티 디스크립터는 프로퍼티의 속성과 동작 방식을 정의하는 객체입니다. 프로퍼티 디스크립터는 다음과 같은 속성을 가지고 있습니다:
value
: 프로퍼티의 실제 값입니다.writable
: 프로퍼티 값이 변경 가능한지 여부를 나타냅니다.enumerable
: 프로퍼티가for...in
루프 등에서 열거 가능한지 여부를 나타냅니다.configurable
: 프로퍼티 디스크립터 자체의 변경 가능 여부를 나타냅니다.
프로퍼티 디스크립터를 통해 프로퍼티의 동작 방식을 세밀하게 제어할 수 있습니다. 예를 들어, writable
이 false
로 설정된 프로퍼티는 값을 변경할 수 없게 됩니다.
객체 내부 동작
객체의 내부 동작은 프로퍼티 디스크립터를 바탕으로 이루어집니다. 객체의 프로퍼티에 접근하면 자바스크립트 엔진은 다음과 같은 일련의 단계를 거치게 됩니다:
- 객체에서 해당 프로퍼티를 찾습니다.
- 프로퍼티가 있는 경우, 프로퍼티 디스크립터를 확인하여 해당 프로퍼티의 동작을 결정합니다. 이때
get
메소드나set
메소드를 사용하여 프로퍼티 값을 가져오거나 변경할 수 있습니다. - 프로퍼티가 없는 경우, 프로토타입 체인을 따라 올라가며 프로퍼티를 찾습니다. 이 과정은 프로토타입 체인 전체를 탐색할 때까지 반복됩니다.
- 최종적으로 프로퍼티를 찾지 못한 경우
undefined
를 반환합니다.
객체의 내부 동작을 이해하면 프로퍼티에 접근하는 방식과 프로퍼티 디스크립터를 이용한 속성 제어에 대한 이해도를 높일 수 있습니다.
결론
프로퍼티 디스크립터와 객체의 내부 동작은 자바스크립트에서 객체와 프로퍼티를 이해하는 데 중요한 개념입니다. 이를 이해하면 객체의 동작을 제어하고 프로퍼티의 동작을 세밀하게 조절하는 데에 도움이 됩니다.
자세한 내용은 MDN 문서를 참고하시기 바랍니다.