console.log
[모던 자바스크립트 Deep Dive] 19 장 Self Quiz 본문
1. 함수 객체의 prototype 프로퍼티에 대한 설명으로 옳은 것은?
① 함수 객체는 모두 prototype 프로퍼티를 소유하고 있다.
② 일반 객체는 모두 prototype 프로퍼티를 소유하고 있다.
③ proto접근자 프로퍼티와 prototype 프로퍼티는 동일한 프로토타입을 가리킨다.
④ proto접근자 프로퍼티와 prototype 프로퍼티는 동일한 사용 주체를 가리킨다.
⑤ proto접근자 프로퍼티와 prototype 프로퍼티는 동일한 사용 목적을 가진다.
정답
③번. ① 생성자 함수로서 호출할 수 없는 함수, non-constructor인 화살표 함수와 메서드 축약 표현으로 정의한 메서드는 prototype 프로퍼티를 소유하지 않으며 프로토타입도 생성하지 않는다. ② prototype 프로퍼티는 생성자 함수로서 호출 할 수 있는 함수 객체만 소유하고 있다. ③ 둘 다 프로토타입의 참조를 가리킨다. ④ __proto__ 접근자 프로퍼티 : 모든 객체 prototype 프로퍼티 : 생성자 함수 ⑤ __proto__ 접근자 프로퍼티 : 객체가 자신의 프로토타입에 접근 혹은 변경하기 위해 사용 prototype 프로퍼티 : 생성자 함수가 생성할 객체의 프로토타입을 할당하기 위해 사용
2. 다음은 객체 생성 방식과 프로토타입의 결정에 관한 내용이다. 올바르지 않은 것은?
① 객체 생성 방식 5가지(객체 리터럴, Object 생성자 함수, 생성자 함수, Object.create 메서드, 클래스(ES6))는 모두 추상 연산 OrdinaryObjectCreate에 의해 생성된다.
② OrdinaryObjectCreate 메서드는 인수로 전달받은 프로토타입을 자신이 생성한 객체의 [[Prototype]] 내부 슬롯에 할당한 다음 생성한 객체를 반환한다.
③ 사용자 정의 생성자 함수와 더불어 생성된 프로토타입은 다양한 빌트인 메서드를 갖고있다.
④ 프로토타입에 프로퍼티를 추가하면 프로토타입 체인에 즉각 반영된다.
⑤ OrdinaryObjectCreate는 필수적으로 자신이 생성할 객체의 프로토타입을 인수로 전달받는다.
정답
③ 사용자 정의 생성자 함수와 더불어 생성된 프로토타입의 프로퍼티는 constructor 뿐이다.
3. 다음 중 프로토타입 체인에 대한 설명으로 올바르지 않은 것은?
① 프로토타입 체인은 상속과 프로퍼티 검색을 위한 메커니즘이다.
② 프로토타입 체인의 최상위에 위치하는 객체는 언제나 null 이다.
③ 프로토타입의 종점에서 프로퍼티를 검색할 수 없는 경우 undefined를 반환한다.
④ 스코프체인과 프로토타입 체인은 서로 협력하여 식별자와 프로퍼티를 검색한다.
⑤ 객체의 프로퍼티 접근 시 접근하려는 프로퍼티가 없으면 [[Prototype]] 내부 슬롯 참조를 따라 부모역할을 하는 프로토타입의 프로퍼티를 순차적으로 검색하는 것을 '프로토타입 체인'이라고 한다.
정답
② 프로토타입 체인의 최상위에 위치하는 객체는 언제나 Object.prototype 이다.
4. 다음과 같은 person 객체가 존재할 때 출력 결과 중 다른 결과를 도출하는 것은?
const person = {
name: "Lee",
address: "Seoul",
__proto__: { age: 20 },
};
for (const value of Object.values(person)) {
// ①
console.log(value);
}
for (const i in person) {
// ②
console.log(person[i]);
}
Object.values(person).forEach((v) => console.log(v)); // ③
for (let i = 0; i < Object.values(person).length; i++) {
// ④
console.log(Object.values(person)[i]);
}
정답
② for...in 문은 객체의 프로토타입 체인 상에 존재하는 모든 프로토타입의 프로퍼티 중에서 프로퍼티 어트리뷰트 [[Enumerable]]의 값이 true인 프로퍼티를 순회하며 열거한다. > Lee > Seoul > 20
'개발공부 > JavaScript' 카테고리의 다른 글
[모던 자바스크립트 Deep Dive] 20 - 21 장 Self Quiz (0) | 2023.08.27 |
---|---|
[모던 자바스크립트 Deep Dive] 20 - 21 장 (0) | 2023.08.26 |
[모던 자바스크립트 Deep Dive] 19 장 (0) | 2023.08.24 |
[모던 자바스크립트 Deep Dive] 16 - 18 장 Self Quiz (0) | 2023.08.23 |
[모던 자바스크립트 Deep Dive] 16 - 18 장 (0) | 2023.08.22 |