26장. ES6 함수
함수 종류?
•
일반함수 : constructor
◦
prototype 프로퍼티 가짐, 프로토타입 객체 생성함
•
메서드 : non-constructor
◦
일반함수(constructor)가 프로토타입 객체를 생성하는 성능 문제를 해결하고자 탄생
◦
super 키워드는 메서드(ES6)만 가능
•
화살표 함수 : non-constructor
◦
일반함수(constructor) this가 전역객체를 가리키는 문제를 해결하고자 탄생
◦
중복된 매개변수 허용 안함
◦
가장 가까운 (화살표 함수가 아닌) 상위 함수의 this, arguments, super, new 참조함
▪
this - this 교체 안됨, lexical this (= 렉시컬 스코프처럼 화살표 함수의 this가 함수가 “정의”된 위치에 의해 결정됨)
▪
arguments - Rest 파라미터
▪
super - 내부슬롯 [[HomeObject]]갖는 ES6메서드만 사용가능
Rest 파라미터
인수들의 목록을 배열로 전달받음
반드시 마지막 파라미터로 넣을 것
단 하나만 선언 가능
vs. arguments 객체
유사배열객체
34장. 이터러블
이터레이션 프로토콜
순회 가능한 데이터 자료구조를 만들기 위해 ECMAScript 사양에 정의하여 미리 약속한 규칙
•
이터러블 프로토콜
◦
순회 가능한 자료구조
◦
for…of문 / 스프레트 문법 / 배열 디스트럭처링 할당 가능
◦
symbol.iterator를 프로퍼티 키로 메서드를 가지는 객체
•
이터레이터 프로토콜
◦
이터러블의 요소를 탐색하기 위한 포인터 역할
◦
next 메서드 소유
▪
value 프로퍼티와 done 프로퍼티를 갖는 ‘이터레이터 리절트 객체’ 반환
빌트인 이터러블 종류
Array, String, Map, Set, TypedArray,
arguments, DOM 컬렉션(NodeList, HTMLCollection)
for…of문 vs. for…in문
•
value 프로퍼티 값, done 프로퍼티
•
[[Enumerable]] 값이 true인 프로퍼티 모두 열거 (심볼 프로퍼티 빼고)
(이터러블 vs.) 유사배열 객체
인덱스 문자열 → 프로퍼티 접근 가능
length 프로퍼티 → for문 순회 가능
but, 결국 일반 객체임 이터러블 아님
⇒ 이터러블인 배열로 변환하는 방법 : Array.from(이터러블 혹은 유사배열 객체)
사용자 정의 이터러블
무한 이터러블 → 지연평가
지연평가 : 평가 결과가 필요할때까지 평가를 늦추는 기법
장점 - 불필요한 데이터를 미리 생성하지 않아 빠른 실행 속도, 메모리 소비 x, 무한도 표현가능
35장. 스프레드 문법 (전개문법)
이터러블 한정
: 하나로 뭉쳐있는 여러 값들의 집합을 펼혀서 개별적인 값들의 목록으로 만듦
결과는 값이 아님 주의 (쉼표로 구분하는 값의 목록을 사용하는 문맥에 사용)
•
함수 호출문의 인수 목록
•
배열 리터럴의 요소 목록
•
객체 리터럴의 프로퍼티 목록
스프레드 문법 vs. Rest 파라미터
•
이터러블을 “펼쳐서” 값들의 목록을 만드는 것
•
함수에 인수들 목록을 “배열”로 “뭉치는 것”
+ Rest 파라미터 vs. Rest 프로퍼티 vs. Rest 요소
36장. 디스트럭처링 할당 (구조분해할당)
이터러블, 객체
: 이터러블 또는 객체를 비구조화해 1개 이상의 변수에 개별적으로 할당
배열 디스트럭처링 할당 | 객체 디스트럭처링 할당 | |
대상 | 배열 | 객체 |
기준 | 인덱스 | 프로퍼티 키 |
순서 의미 o
Rest 요소 | 순서 의미 x
Rest 프로퍼티 |
활용) 배열의 요소가 객체인 경우, 중첩 객체인 경우