[javascript] 프로퍼티 디스크립터의 구성 요소
- value: 프로퍼티에 할당되는 값입니다. 이 값은 자바스크립트의 모든 데이터 유형 중 하나일 수 있습니다.
예제 코드:
var person = {
name: "John",
age: 30
};
console.log(person.name); // 출력: John
- writable: 프로퍼티가 수정 가능한지를 나타내는 불리언 값입니다. true로 설정하면 값을 변경할 수 있으며, false로 설정하면 값을 변경할 수 없습니다.
예제 코드:
var person = {
name: "John",
age: 30
};
Object.defineProperty(person, "name", {
writable: false
});
person.name = "Jane"; // 에러: name 프로퍼티는 수정할 수 없습니다.
- enumerable: 프로퍼티가 열거 가능한지를 나타내는 불리언 값입니다. true로 설정하면 for…in 루프 등의 열거 작업에서 해당 프로퍼티가 나타나고, false로 설정하면 열거 작업에서 나타나지 않습니다.
예제 코드:
var person = {
name: "John",
age: 30
};
Object.defineProperty(person, "name", {
enumerable: false
});
for (var key in person) {
console.log(key); // 출력: age
}
- configurable: 프로퍼티가 구성 가능한지를 나타내는 불리언 값입니다. true로 설정하면 다음과 같이 프로퍼티의 구성을 변경할 수 있습니다.
- 값을 변경할 수 있음
- enumerable 속성을 변경할 수 있음
- delete 연산자로 프로퍼티를 삭제할 수 있음
false로 설정하면 위의 동작들이 불가능합니다.
예제 코드:
var person = {
name: "John",
age: 30
};
Object.defineProperty(person, "name", {
configurable: false
});
delete person.name; // 에러: name 프로퍼티를 삭제할 수 없습니다.
프로퍼티 디스크립터는 Object.defineProperty()
메서드를 사용하여 정의하거나, 객체 리터럴 내에서 직접 정의할 수 있습니다. 이를 통해 자바스크립트 객체의 속성을 세밀하게 제어할 수 있습니다.
참고 문서:
-
[Object.defineProperty() - JavaScript MDN](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty)