[javascript] 프로퍼티 디스크립터를 이용한 객체 커스터마이징

프로퍼티 디스크립터는 Object.defineProperty() 메서드를 사용하여 객체의 속성을 정의할 때 적용됩니다. 예를 들어, 아래의 코드에서는 ‘name’이라는 프로퍼티를 가진 객체를 생성하고, 이 프로퍼티에 대한 디스크립터를 설정하는 방법을 보여줍니다.

let obj = {};

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

console.log(obj.name);  // 출력: John
obj.name = 'Jane';
console.log(obj.name);  // 출력: John

위의 코드에서는 ‘name’ 프로퍼티에 대한 디스크립터를 설정하여, 이 프로퍼티의 값은 읽기 전용으로 설정되었습니다(writable: false). 따라서 obj.name = ‘Jane’;과 같이 값을 변경하려고 하더라도 변경되지 않고 ‘John’이 유지됩니다.

디스크립터의 다른 속성들도 유용한 기능을 제공합니다. enumerable 속성은 객체의 프로퍼티가 for…in 루프를 통해 나열될 수 있는지 여부를 결정합니다. configurable 속성은 프로퍼티의 디스크립터를 변경할 수 있는지 여부를 결정합니다.

프로퍼티 디스크립터를 이용하여 객체를 커스터마이징하면 객체의 동작을 더욱 세밀하게 제어할 수 있습니다. 따라서 프로퍼티의 값을 읽기 전용으로 설정하거나, 프로퍼티가 나열되지 않도록 설정하고자 할 때, 프로퍼티 디스크립터를 사용해 보세요.

참조: