[javascript] 프로퍼티 디스크립터를 이용한 객체 상태 추적

JavaScript에서는 객체의 프로퍼티를 추적하고 상태를 확인하는 방법이 여러 가지 있습니다. 이 중 하나는 프로퍼티 디스크립터를 이용하는 방법입니다. 프로퍼티 디스크립터는 프로퍼티에 대한 정보를 담고 있는 객체입니다.

프로퍼티 디스크립터는 다음과 같은 속성을 가지고 있습니다:

이 속성들을 이용하여 프로퍼티의 상태를 추적할 수 있습니다. 예를 들어, 다음과 같은 객체가 있다고 가정해봅시다:

const obj = {
  name: 'John',
  age: 20
};

이 객체의 name 프로퍼티를 변경할 때마다 변경 내용을 콘솔에 출력하고 싶을 경우에는 다음과 같이 할 수 있습니다:

Object.defineProperty(obj, 'name', {
  set: function(value) {
    console.log('name이 변경되었습니다:', value);
    this._name = value;
  },
  get: function() {
    return this._name;
  }
});

이렇게 set 속성에 함수를 정의하고, 함수 내에서 원하는 동작을 수행하면 됩니다. 이 경우에는 name 프로퍼티가 변경될 때마다 변경된 값을 콘솔에 출력하고, this._name에 변경된 값을 저장합니다.

이제 name 프로퍼티를 변경해보면:

obj.name = 'Jane'; // "name이 변경되었습니다: Jane" 출력

name 프로퍼티가 변경될 때마다 변경된 값이 콘솔에 출력됩니다.

이와 같이 프로퍼티 디스크립터를 이용하면 객체의 상태를 추적할 수 있습니다. 프로퍼티의 다양한 속성을 활용하여 객체를 견고하게 관리할 수 있습니다.

참고 자료