JavaScript - 문제 미리보기

문제 617

hard
다음 코드들의 실행결과는?

```javascript
// 코드 A
const person = {firstName: "John", lastName: "Doe"};
const man = Object.create(person);
man.firstName = "Peter";

// 코드 B
const person1 = {firstName: "John", lastName: "Doe"};
const person2 = {firstName: "Peter"};
Object.assign(person1, person2);

console.log("A:", man.lastName); // ?
console.log("B:", person1.lastName); // ?
```
A. A: "undefined", B: "Doe"
B. A: "Doe", B: "undefined"
C. A: "Doe", B: "Doe"
D. A: "undefined", B: "undefined"

정답: C

1) 코드 A: `Object.create(person)`으로 생성된 `man` 객체는 `person`을 프로토타입으로 가지므로, `man.lastName`을 접근하면 프로토타입 체인을 통해 `person.lastName`인 "Doe"를 반환합니다.
2) 코드 B: `Object.assign(person1, person2)`는 `person2`의 속성만 복사하므로 `person1.lastName`은 기존 값 "Doe"를 유지합니다.

따라서 두 경우 모두 "Doe"가 출력됩니다. `Object.create()`는 프로토타입 상속을, `Object.assign()`은 속성 복사를 수행한다는 차이가 있습니다.

💡 학습 팁

이 문제를 포함한 JavaScript 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.