목차
프로퍼티 디스크립터란?
프로퍼티 디스크립터는 JavaScript 객체의 프로퍼티에 대한 속성을 정의하는데 사용됩니다. 프로퍼티 디스크립터는 프로퍼티의 값, 열거 가능 여부, 쓰기 가능 여부, 설정 가능 여부 등을 설정할 수 있습니다.
프로퍼티 디스크립터는 Object.defineProperty()
메서드를 사용하여 설정할 수 있습니다.
프로퍼티 열거 가능 여부 설정
프로퍼티 디스크립터를 이용하여 프로퍼티의 열거 가능 여부를 설정할 수 있습니다. 열거 가능한 프로퍼티는 for...in
루프나 Object.keys()
메서드 등을 사용하여 객체의 프로퍼티를 열거할 때 포함되는지 여부를 결정합니다.
프로퍼티의 디스크립터 객체에서 enumerable
속성을 true
로 설정하면 프로퍼티는 열거 가능하게 됩니다. false
로 설정하면 열거할 수 없게 됩니다.
다음은 프로퍼티 디스크립터를 이용하여 프로퍼티의 열거 가능 여부를 설정하는 예제 코드입니다.
const obj = {};
Object.defineProperty(obj, 'name', {
value: 'John',
enumerable: false
});
for (const key in obj) {
console.log(key); // name 프로퍼티는 열거되지 않음
}
console.log(Object.keys(obj)); // []
console.log(Object.getOwnPropertyDescriptor(obj, 'name'));
// { value: 'John', writable: false, enumerable: false, configurable: false }
위 예제 코드에서 name
프로퍼티의 enumerable
속성을 false
로 설정하여 프로퍼티가 열거되지 않도록 설정하였습니다. for...in
루프나 Object.keys()
메서드를 사용하여 열거할 때 name
프로퍼티는 포함되지 않습니다.
Object.getOwnPropertyDescriptor()
메서드를 사용하여 프로퍼티의 디스크립터를 확인해보면 enumerable
속성이 false
로 설정되어 있는 것을 확인할 수 있습니다.
이렇게 프로퍼티 디스크립터를 이용하여 프로퍼티의 열거 가능 여부를 설정하면 객체의 프로퍼티를 열거할 때 특정 프로퍼티들을 제외할 수 있습니다.