[javascript] 자바스크립트에서의 프로퍼티 디스크립터 백엔드 활용

자바스크립트에서는 객체의 프로퍼티를 다루는데 프로퍼티 디스크립터를 활용할 수 있습니다. 프로퍼티 디스크립터는 프로퍼티의 속성을 설정하거나 조회하는 데 사용되며, 속성은 값, 쓰기 가능 여부, 열거 가능 여부 등을 나타내는 정보들을 가지고 있습니다.

프로퍼티 디스크립터는 Object.getOwnPropertyDescriptor 메서드를 통해 얻을 수 있습니다. 이 메서드는 주어진 객체에 정의된 특정 프로퍼티의 디스크립터를 반환합니다. 이를 통해 프로퍼티의 속성을 동적으로 변경하거나 감시할 수 있습니다.

const obj = { name: 'John' };
const descriptor = Object.getOwnPropertyDescriptor(obj, 'name');
console.log(descriptor);
// 출력: { value: 'John', writable: true, enumerable: true, configurable: true }

프로퍼티 디스크립터를 활용하면 객체의 프로퍼티에 대한 다양한 동작을 수행할 수 있습니다. 예를 들어, 프로퍼티의 값을 읽거나 변경할 때 특정 동작을 추가로 수행하고 싶을 때 사용할 수 있습니다.

const obj = { name: 'John' };

Object.defineProperty(obj, 'name', {
  get() {
    console.log('Getter called');
    return this._name;
  },
  set(value) {
    console.log('Setter called');
    this._name = value;
  },
});

console.log(obj.name); // 출력: "Getter called"를 출력한 후 "John"을 반환
obj.name = 'Jane'; // 출력: "Setter called"를 출력한 후 obj._name에 "Jane"을 할당

위 예제에서는 Object.defineProperty 메서드를 사용하여 obj 객체의 name 프로퍼티에 getter와 setter를 정의했습니다. 이제 obj.name을 조회하면 getter가 호출되며, obj.name = 'Jane'과 같이 값을 변경하면 setter가 호출됩니다.

프로퍼티 디스크립터를 활용하면 객체의 프로퍼티를 세밀하게 제어할 수 있으며, 이를 통해 프로퍼티를 동적으로 활용할 수 있습니다.

참고 자료