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 속성 정리
| 속성명 | 역할 및 설명 | 값 (기본값) |
|---|---|---|
configurable | true이면 속성을 삭제하거나 writable, enumerable을 변경 가능 | true |
enumerable | true이면 for...in 루프나 Object.keys()에 포함됨(열거) | true |
value | 해당 속성의 값 | undefined |
writable | true이면 속성 값을 변경 가능 | false |
동작 확인하기
Object.defineProperty(user, "age", {
// 속성 값 변경 불가 추가
writable: false,
value: 20,
});
user.age = 30;
console.log(user.age);
// => 20
- Object.defineProperty로 PropertyDescriptor를 변경해보았더니, 잘 동작합니다.