console.log

[모던 자바스크립트 Deep Dive] 20 - 21 장 Self Quiz 본문

개발공부/JavaScript

[모던 자바스크립트 Deep Dive] 20 - 21 장 Self Quiz

foresight 2023. 8. 27. 17:58

1. proto 접근자 프로퍼티에 대한 설명으로 옳지 않은 것은 ?

  1. [[Get]] , [[Set]] 프로퍼티 어트리뷰트를 통해 프로토타입 취득, 할당 가능하다.
  2. 객체가 직접 소유하는 프로퍼티이다.
  3. 상호 참조에 의해 프로토타입 체인이 생성되는 것을 방지하기 위해 사용한다.
  4. 코드 내에서 직접 사용하는 것을 권장하지 않는다.

정답
2. 객체가 직접 소유하는 프로퍼티가 아니라 Object.prototype의 접근자 프로퍼티이다.
따라서 모든 객체는 상속을 통해 Object.prototype.proto 사용 가능하다.

2. 다음 빈칸에 들어갈 말은 ?

객체를 생성할 때에는 모두 추상 연산인 ______________에 의해 생성


정답
OrdinaryObjectCreate

3. 다음 빈칸에 들어갈 말은 ?

자바스크립트 엔진은 객체 간의 상속 관계로 이루어진 프로토타입의 계층적인 구조에서 객체의 프로퍼티를 검색한다. __ 은 상속과 프로퍼티 검색을 위한 메커니즘이라고 할 수 있다.


정답
프로토타입 체인

4. 다음 출력은?

function Person(name) {
	this.name = name;
}

const me = new Person('Lee');

const parent = {};

Object.setPrototypeOf(me, parent);

console.log(Person.prototype === parent); // 1 
console.log(parent.constructor === Person); // 2
console.log(me instanceof Person);  // 3
console.log(me instanceof Object);  // 4

정답
false
false
false
true


5. 위 3, 4번이 true가 되기 위해서 중간에 어떤 코드가 삽입되어야 할까요 ?


정답
Person.prototype = parent;

6. strict mode를 적용하기 위해서 선두에 추가해야 하는 명령어는 ?


정답
‘use strict’;

7. 다음 중 strict mode 로 걸러낼 수 있는 에러가 아닌 것은 ?

  1. 암묵적 전역 - 선언하지 않은 변수를 참조하면 ReferenceError 발생
  2. 변수, 함수, 매개변수의 삭제 - delete연산자로 변수, 함수, 매개변수를 삭제하면 SyntaxError 발생
  3. 매개변수 이름의 중복 - 중복된 매개변수 이름 사용으로 SyntaxError 발생
  4. switch 문의 사용 - switch 문을 사용하면 SyntaxError 발생

정답
5. switch가 아니라 with 문을 사용하면 에러 발생

8. 원시값에 대한 설명으로 옳지 않은 것은 ?

  1. 원시값은 객체가 아니므로 프로퍼티나 메서드를 가질 수 없는데도 마치 객체처럼 동작함
  2. 원시값에 객체처럼 접근하면 생성되는 임시 객체를 래퍼 객체라고 한다.
  3. 문자열, 숫자 값에 마침표 표기법으로 접근하면 String.prototype, Number.prototype의 메서드를 상속 받아 사용 가능
  4. 모든 원시값을 객체처럼 사용할 수 있다.

정답
5. 문자열, 숫자, 불리언, 심벌 이외의 원시값을 객체처럼 사용하면 에러 발생