Search
Duplicate
🚡

4. 객체: 기본

1.
객체
: 원시형과 달리 다양한 데이터를 담을 수 있는 자료형
: 문법은 딕셔너리, 사용법은 객체

생성방법

let user = new Object(); // '객체 생성자' 문법 let user = {}; // '객체 리터럴' 문법
JavaScript
복사
리터럴과 프로퍼티
대괄호 표기법
단축 프로퍼티
프로퍼티 이름의 제약사항
‘in’ 연산자로 프로퍼티 존재 여부 확인하기
‘for…in’ 반복문
요약
2.
참조에 의한 객체 복사
: 객체와 원시 타입의 근본적인 차이는 참조에 의해 저장되고 복사되느냐
⇒ 원시값은 ‘값 그대로’ 저장, 할당되고 복사되는 반면에 객체는 그렇지 않음
개요
객체 복사, 병합과 Object.assign
중첩 객체 복사
요약
3.
가비지 컬렉션 + 보충 필요
: 자바스크립트는 눈에 보이지 않는 곳에서 메모리 관리를 수행, 원시값, 객체, 함수 등 우리가 만드는 모든 것은 메모리를 차지하는데, 더는 쓸모 없어진 것들은 어떻게 처리
가비지 컬렉션 기준
간단한 예시
참조 두 개
연결된 객체
도달할 수 없는 섬
내부 알고리즘
요약
4.
메서드와 this
: 객체는 사용자, 주문 등과 같이 현실에 존재하는 개체를 표현하고자 할 때 생성함
메서드 만들기
메서드와 this
자유로운 this
this가 없는 화살표 함수
요약
5.
new 연산자와 생성자 함수
: 객체 리터럴 {…} 을 사용하면 객체를 쉽게 만들 수 있음, 그러나 유사한 객체를 여러개 만들어야할 때 어떡하지?
: new 연산자와 생성자 함수를 사용하면 간편하게 만들 수 있다.
생성자 함수
new.target과 생성자 함수 - 자주 쓰이지 않는 문법
생성자와 return문 - 거의 안 쓰임
생성자 내 메서드
요약
6.
옵셔널 체이닝 ‘?.’ - 스펙에 추가된지 얼마 되지 않은 문법, 구식 브라우저는 폴리필이 필요함
: 옵셔널 체이닝 ?.을 사용하면 프로퍼티가 없는 중첩 객체를 에러 없이 안전하게 접근할 수 있음
옵셔널 체이닝이 필요한 이유
옵셔널 체이닝의 등장
단락 평가
?.()와 ?.[]
요약
7.
심볼형 - 왜 씀?
: 자바스크립트는 객체 프로퍼티 “키”로 오직 문자형과 심볼형만을 허용, 숫자형, 불린형 모두 불가능함
심볼
‘숨김’ 프로퍼티
전역 심볼
시스템 심볼
요약
8.
객체를 원시형으로 변환하기
: 객체끼리 더하는 연산을 하거나 빼는 연산을 하면 어떤 일이 일어날까
: 이 모든 경우에 자동 형 변환이 일어남, 객체는 원시값으로 변환되고 그 후 의도한 연산이 수행됨
a.
객체는 논리 평가 시 true를 반환, 단 하나의 예외도 없음, 즉 객체는 숫자형과 문자형으로 형 변환
b.
숫자형으로의 형 변환은 객체끼리 빼는 연산을 하거나 수학 관련 함수를 적용할 때 발생, 두 개의 객체 Date 간의 빼기 연산을 수행할 경우, 시간 차이가 반환
c.
문자형으로의 형 변환은 대개 alert(obj)와 같이 출력하려고 할때 일어남
ToPrimitive
Symbol.toPrimitive
toString과 valueOf
반환 타입
추가 형 변환
요약