/////
Search

26, 34-36장

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 프로퍼티
활용) 배열의 요소가 객체인 경우, 중첩 객체인 경우