[javascript] 프로퍼티 디스크립터의 일반적인 용도와 활용 범위

프로퍼티 디스크립터의 활용은 다양합니다. 예를 들어, 객체의 프로퍼티를 상수로 정의하고 싶을 때 writable 속성을 false로 설정하여 값을 변경할 수 없도록 할 수 있습니다. 또한, 객체의 프로퍼티를 숨기고 싶을 때 enumerable 속성을 false로 설정하여 해당 프로퍼티가 열거되지 않도록 할 수 있습니다. 이를 통해 객체의 내부 상태를 보호하고 외부에 노출시키지 않을 수 있습니다.

프로퍼티 디스크립터는 Object.defineProperty() 메서드를 사용하여 프로퍼티를 정의할 때 적용할 수 있습니다. 이 메서드는 객체, 프로퍼티 이름, 및 프로퍼티 디스크립터를 인자로 받아 해당 프로퍼티를 정의합니다.

const obj = {};

Object.defineProperty(obj, 'x', {
  value: 10,
  writable: false,
  enumerable: true,
  configurable: false
});

console.log(obj.x);  // 10
obj.x = 20;  // 에러 발생, writable이 false로 설정되어 있어 값을 변경할 수 없음
console.log(obj.x);  // 10

for (let key in obj) {
  console.log(key);  // x
}

프로퍼티 디스크립터를 사용하면 JavaScript 객체의 프로퍼티를 세밀하게 제어할 수 있으며, 객체의 내부 상태를 보호하거나 외부에 노출시키지 않을 수 있습니다.

참고 자료