JavaScript - 문제 미리보기
문제 646
hard
`Object.defineProperty()`를 사용한 다음 코드의 실행 결과는 무엇인가요?
```javascript
const obj = {counter: 0};
Object.defineProperty(obj, "reset", {
get: function() { this.counter = 0; }
});
Object.defineProperty(obj, "add", {
set: function(value) { this.counter += value; }
});
obj.counter = 10;
obj.add = 5;
obj.reset;
console.log(obj.counter);
```
```javascript
const obj = {counter: 0};
Object.defineProperty(obj, "reset", {
get: function() { this.counter = 0; }
});
Object.defineProperty(obj, "add", {
set: function(value) { this.counter += value; }
});
obj.counter = 10;
obj.add = 5;
obj.reset;
console.log(obj.counter);
```
정답: A
코드 실행 순서를 따라가면:
1) `obj.counter` = 10 → counter가 10이 됨
2) `obj.add = 5` → setter가 실행되어 counter에 5를 더함 (10 + 5 = 15)
3) `obj.reset` → getter가 실행되어 counter를 0으로 리셋
4) 최종 결과: 0
`Object.defineProperty()`는 getter와 setter를 정의하는 또 다른 방법으로, 객체 리터럴 문법과 동일한 기능을 제공합니다. 이 예제는 카운터를 구현하는 실용적인 사례를 보여줍니다.
1) `obj.counter` = 10 → counter가 10이 됨
2) `obj.add = 5` → setter가 실행되어 counter에 5를 더함 (10 + 5 = 15)
3) `obj.reset` → getter가 실행되어 counter를 0으로 리셋
4) 최종 결과: 0
`Object.defineProperty()`는 getter와 setter를 정의하는 또 다른 방법으로, 객체 리터럴 문법과 동일한 기능을 제공합니다. 이 예제는 카운터를 구현하는 실용적인 사례를 보여줍니다.
💡 학습 팁
이 문제를 포함한 JavaScript 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.