객체, 참조에 의한 객체 복사, 가비지 컬렉션, 메서드와 this, new 연산자와 생성자 함수, 옵셔널 체이닝’?.’, 심볼형, 객체를 원시형으로 변환하기
4.1 객체
- 객체란?
- 프로퍼티란?
- 빈 객체를 만드는 방법에 대해 설명하시오
리터럴과 프로퍼티
- 프로퍼티를 추가, 삭제, 변경하려면?
- 트레일링 쉼표란?
- 상수 객체에 대해 설명하라
대괄호 표기법
- 대괄호 표기법과 점 표기법의 차이
- 계산된 프로퍼티란? 사용법
단축 프로퍼티
- 단축 프로퍼티란?
프로퍼티 이름의 제약사항
- 프로퍼티 이름에 대한 제약사항에 대해 설명하시오
__proto__
란?
‘in’ 연산자로 프로퍼티 존재 여부 확인하기
- 프로퍼티 존재 여부를 확인하는 법에 대해 설명하시오
‘for…in’ 반복문
- 객체 프로퍼티는 어떻게 정렬되는가?
- 정수 프로퍼티란?
4.2 참조에 의한 객체 복사
- 객체와 원시 타입의 차이에 대해 설명하시오
객체 복사, 병합과 Object.assign
- 객체를 복사하는 방법을 여러 개 말해보라
중첩 객체 복사
- 깊은 복사, 얕은 복사에 대해 설명하시오
4.3 가비지 컬렉션
가비지 컬렉션 기준
- 자바스크립트에서 메모리 관리는 어떻게 이루어지는가?
- 가비지 컬렉터란?
간단한 예시
참조 두 개
연결된 객체
도달할 수 없는 섬
내부 알고리즘
- mark-and-sweep 알고리즘에 대해 설명하시오
- 다른 최적화 기법들에 대해 설명하시오
4.4 메서드와 this
메서드 만들기
- 메서드 단축 구문이란?
메서드와 this
- this란? 무엇인지 설명하고 사용 예시를 보이시오
자유로운 this
- this의 동작 방식에 대해 설명하시오
- 객체 없이 함수를 호출했을 때, this는 어떻게 되는가?
this가 없는 화살표 함수
- 화살표 함수와 this의 관계에 대해 말해보라
4.5 new 연산자와 생성자 함수
생성자 함수
- 생성자 함수란? 일반 함수와의 차이는?
- 생성자 함수를 작성해보시오
new
연산자에 대해 설명하시오- 익명 생성자 함수란? 사용 이유
new.target과 생성자 함수
new.taget
프로퍼티에 대해 말해보시오new
가 없이 호출하는 경우?
생성자와 return문
- 생성자 함수에
return
문이 없는 이유는? return
문이 있다면?- 괄호가 없는 생성자 함수에 대해 말해보라
생성자 내 메서드
4.6 옵셔널 체이닝 ‘?.’
옵셔널 체이닝이 필요한 이유
- 옵셔널 체이닝이 없다면 어떤 식으로 코드를 작성하는가?
옵셔널 체이닝의 등장
- 옵셔널 체이닝의 동작 방식에 대해 설명하시오
단락 평가
- 단락 평가란?
?.()와 ?.[]
- 옵셔널 체이닝이 연산자가 아닌 이유?
delete
와 사용할 수 있는가?
4.7 심볼형
- 자바스크립트에서 객체 프로퍼티 키로 허용하는 자료형은 어떤 것이 있는가?
심볼
- 심볼은 어떤 때 사용하는가? 심볼값을 생성하라
- 심볼 이름이란?
- 심볼은 중복되지 않는가?
- 심볼을 출력하려면?
‘숨김’ 프로퍼티
- 숨김 프로퍼티란?
- 숨김 프로퍼티를 사용해야 하는 이유
for..in
반복문과 심볼Object.keys()
와 심볼Object.assign()
과 심볼
전역 심볼
- 전역 심볼이란?
- 전역 심볼 레지스트리란?
시스템 심볼
- 시스템 심볼이란?
4.8 객체를 원시형으로 변환하기
- 객체의 자동 형 변환에 대해 설명하시오
ToPrimitive
- 객체 형 변환을 세 종류로 구분하는
hint
란? - 세 종류에 대해 설명하시오
- 자바스크립트에서 형 변환이 필요할 때, 어떤 알고리즘에 따라 어떤 메서드를 찾고 호출하는가?
Symbol.toPrimitive
Symbol.toPrimitive
내장 심볼에 대해 설명하고 구현해보라
toString과 valueOf
toString
과valueOf
에 대해 설명하시오
반환 타입
toString
,valueOf
,Symbol.toPrimitive
가hint
에 명시된 자료형으로 형 변환을 보장하는가?toString
,valueOf
에서 객체를 반환하면 어떻게 되는가?
추가 형 변환
- 객체가 피연산자일 경우 형 변환이 일어나는 단계를 설명하시오