라이브러리
[JAVASCRIPT] Object.defineProperty(obj, prop, descriptor) - 객체 속성의 세부 정의 (예: 읽기 전용 설정)
Object.defineProperty() 메서드
`Object.defineProperty()` 메서드는 객체의 속성을 정의합니다. 이 메서드는 객체의 속성을 동적으로 추가하거나 기존 속성을 재정의할 수 있습니다.
메서드의 매개변수
`Object.defineProperty()` 메서드는 세 개의 매개변수를 받습니다.
- `obj`: 객체에 속성을 정의할 객체입니다.
- `prop`: 객체에 속성을 정의할 속성 이름입니다.
- `descriptor`: 속성에 대한 설명자입니다.
설명자(Descriptor)
설명자는 속성에 대한 정보를 담고 있는 객체입니다. 설명자는 다음 속성을 가질 수 있습니다.
- `value`: 속성의 값입니다.
- `writable`: 속성이 읽기/쓰기 가능 여부를 나타냅니다. (기본값: `true`)
- `enumerable`: 속성이 열거 가능 여부를 나타냅니다. (기본값: `false`)
- `configurable`: 속성이 재정의 가능 여부를 나타냅니다. (기본값: `false`)
예제
#hostingforum.kr
javascript
// 객체 생성
const obj = {};
// 속성 정의
Object.defineProperty(obj, 'name', {
value: 'John Doe',
writable: true,
enumerable: true,
configurable: true
});
// 속성 읽기
console.log(obj.name); // John Doe
// 속성 쓰기
obj.name = 'Jane Doe';
console.log(obj.name); // Jane Doe
// 속성 열거
console.log(Object.keys(obj)); // ['name']
// 속성 재정의
Object.defineProperty(obj, 'name', {
value: 'Jim Doe',
writable: false,
enumerable: false,
configurable: false
});
// 속성 읽기 (읽기 가능 여부가 false로 설정되어 있으므로 읽을 수 없음)
try {
console.log(obj.name);
} catch (error) {
console.error(error); // Cannot read property 'name' of object '#'
}
// 속성 열거 (열거 가능 여부가 false로 설정되어 있으므로 열거되지 않음)
console.log(Object.keys(obj)); // []
결론
`Object.defineProperty()` 메서드는 객체의 속성을 동적으로 추가하거나 기존 속성을 재정의할 수 있습니다. 설명자는 속성에 대한 정보를 담고 있는 객체로, 속성의 값, 읽기/쓰기 가능 여부, 열거 가능 여부, 재정의 가능 여부를 나타낼 수 있습니다.
댓글목록
등록된 댓글이 없습니다.