[javascript] 프로퍼티 디스크립터를 이용한 객체 상태 제어
JavaScript에서 객체의 프로퍼티를 제어하는 방법은 매우 중요합니다. 객체의 상태를 제어하기 위해 프로퍼티 디스크립터를 사용할 수 있습니다. 프로퍼티 디스크립터란 객체의 프로퍼티에 대한 속성을 정의하는 객체입니다. 이를 통해 프로퍼티의 값을 읽기 전용, 쓰기 전용 등으로 제한할 수 있습니다.
프로퍼티 디스크립터 생성하기
프로퍼티 디스크립터를 생성하기 위해서는 Object.defineProperty()
메서드를 사용합니다. 이 메서드는 다음과 같은 형태로 사용됩니다.
Object.defineProperty(obj, prop, descriptor)
obj
: 프로퍼티를 정의할 객체prop
: 프로퍼티 이름descriptor
: 프로퍼티 디스크립터 객체
프로퍼티 디스크립터 속성
프로퍼티 디스크립터 객체는 다음과 같은 속성을 가질 수 있습니다.
value
: 프로퍼티의 값writable
: 프로퍼티의 값을 변경할 수 있는지 여부enumerable
: 프로퍼티가 열거 가능한지 여부configurable
: 프로퍼티의 속성을 변경할 수 있는지 여부
예제: 읽기 전용 프로퍼티 디스크립터 생성
다음은 읽기 전용 프로퍼티 디스크립터를 생성하는 예제입니다.
let obj = {};
Object.defineProperty(obj, 'name', {
value: 'John',
writable: false,
enumerable: true,
configurable: false
});
console.log(obj.name); // "John"
obj.name = 'Mike'; // 에러 발생
console.log(obj.name); // "John"
위 예제에서는 name
프로퍼티를 읽기 전용으로 만들기 위해 writable
속성을 false
로 설정했습니다. 따라서 obj.name = 'Mike'
와 같은 할당 연산이 에러를 발생시킵니다.
결론
JavaScript에서 객체의 상태를 제어하기 위해서는 프로퍼티 디스크립터를 적절히 활용해야 합니다. 프로퍼티 디스크립터를 이용하면 읽기 전용, 쓰기 전용 등의 제한을 통해 객체의 상태를 보다 안정적으로 관리할 수 있습니다.