JS PropertyDescriptor

2025-02-05
jsPropertyDescriptor

PropertyDescriptor란?

PropertyDescriptor객체 속성(프로퍼티)의 동작을 정의하는 객체입니다.
Object.defineProperty() 또는 데코레이터에서 메서드 속성을 조작할 때 사용됩니다.

const user = {
  age: 20,
  name: "gogleset",
};
  • 자바스크립트 객체입니다. 이 속성이 끝이 아니라 숨겨진 속성이 있습니다.
console.log(Object.getOwnPropertyDescriptor(user, "age"));

/*
{
  configurable: true,
  enumerable: true,
  value: 20,
  writable: true
}
*/
  • user의 age라는 값에 대한 이런 정보들이 각 속성이 어떻게 작동할지를 정의합니다.

PropertyDescriptor 속성 정리

속성명역할 및 설명값 (기본값)
configurabletrue이면 속성을 삭제하거나 writable, enumerable을 변경 가능true
enumerabletrue이면 for...in 루프나 Object.keys()에 포함됨(열거)true
value해당 속성의 값undefined
writabletrue이면 속성 값을 변경 가능false

동작 확인하기

Object.defineProperty(user, "age", {
  // 속성 값 변경 불가 추가
  writable: false,
  value: 20,
});

user.age = 30;
console.log(user.age);
// => 20
  • Object.defineProperty로 PropertyDescriptor를 변경해보았더니, 잘 동작합니다.