You Don't Know JS: this와 객체 프로토타입, 비동기와 성능
도서명:You Don't Know JS: this와 객체 프로토타입, 비동기와 성능
저자/출판사:카일,심슨/한빛미디어
쪽수:460쪽
출판일:2017-07-26
ISBN:9788968488535
목차
PART I this와 객체 프로토타입
1장 this라나 뭐라나
_1.1 this를 왜?
_1.2 헷갈리는 것들
__1.2.1 자기 자신
__1.2.2 자신의 스코프
_1.3 this는 무엇인가?
_1.4 정리하기
2장 this가 이런 거로군!
_2.1 호출부
_2.2 단지 규칙일 뿐
__2.2.1 기본 바인딩
__2.2.2 암시적 바인딩
__2.2.3 명시적 바인딩
__2.2.4 new 바인딩
_2.3 모든 건 순서가 있는 법
__2.3.1 this 확정 규칙
_2.4 바인딩 예외
__2.4.1 this 무시
__2.4.2 간접 레퍼런스
__2.4.3 소프트 바인딩
_2.5 어휘적 this
_2.6 정리하기
3장 객체
_3.1 구문
_3.2 타입
__3.2.1 내장 객체
_3.3 내용
__3.3.1 계산된 프로퍼티명
__3.3.2 프로퍼티 vs 메서드
__3.3.3 배열
__3.3.4 객체 복사
__3.3.5 프로퍼티 서술자
__3.3.6 불변성
__3.3.7 [[Get]]
__3.3.8 [[Put]]
__3.3.9 게터와 세터
__3.3.10 존재 확인
_3.4 순회
_3.5 정리하기
4장 클래스와 객체의 혼합
_4.1 클래스 이론
__4.1.1 클래스 디자인 패턴
__4.1.2 자바스크립트 클래스
_4.2 클래스 체계
__4.2.1 건축
__4.2.2 생성자
_4.3 클래스 상속
__4.3.1 다형성
__4.3.2 다중 상속
_4.4 믹스인
__4.4.1 명시적 믹스인
__4.4.2 암시적 믹스인
_4.5 정리하기
5장 프로토타입
_5.1 [[Prototype]]
__5.1.1 Object.prototype
__5.1.2 프로퍼티 세팅과 가려짐
_5.2 클래스
__5.2.1 클래스 함수
__5.2.2 생성자
__5.2.3 체계
_5.3 프로토타입 상속
__5.3.1 클래스 관계 조사
_5.4 객체 링크
__5.4.1 링크 생성
__5.4.2 링크는 대비책?
_5.5 정리하기
6장 작동 위임
_6.1 위임 지향 디자인으로 가는 길
__6.1.1 클래스 이론
__6.1.2 위임 이론
__6.1.3 멘탈 모델 비교
_6.2 클래스 vs 객체
__6.2.1 위젯 클래스
__6.2.2 위젯 객체의 위임
_6.3 더 간단한 디자인
__6.3.1 탈클래스화
_6.4 더 멋진 구문
__6.4.1 비어휘적 식별자
_6.5 인트로스펙션
_6.6 정리하기
PART II 비동기와 성능
1장 비동기성: 지금과 나중
_1.1 프로그램 덩이
__1.1.1 비동기 콘솔
_1.2 이벤트 루프
_1.3 병렬 스레딩
__1.3.1 완전-실행
_1.4 동시성
__1.4.1 비상호 작용
__1.4.2 상호 작용
__1.4.3 협동
_1.5 잡
_1.6 문 순서
_1.7 정리하기
2장 콜백
_2.1 연속성
_2.2 두뇌는 순차적이다
__2.2.1 실행 vs 계획
__2.2.2 중첩/연쇄된 콜백
_2.3 믿음성 문제
__2.3.1 다섯 마리 콜백 이야기
__2.3.2 남의 코드뿐만 아니라
_2.4 콜백을 구하라
_2.5 정리하기
3장 프라미스
_3.1 프라미스란
__3.1.1 미랫값
__3.1.2 완료 이벤트
_3.2 데너블 덕 타이핑
_3.3 프라미스 믿음
__3.3.1 너무 빨리 호출
__3.3.2 너무 늦게 호출
__3.3.3 한번도 콜백을 ****호출
__3.3.4 너무 가끔, 너무 종종 호출
__3.3.5 인자/환경 전달 실패
__3.3.6 에러/예외 삼키기
__3.3.7 미더운 프라미스?
__3.3.8 믿음 형성
_3.4 연쇄 흐름
__3.4.1 용어 정의: 귀결, 이룸, 버림
_3.5 에러 처리
__3.5.1 절망의 구덩이
__3.5.2 잡히지 않은 에러 처리
__3.5.3 성공의 구덩이
_3.6 프라미스 패턴
__3.6.1 Promise.all([ ])
__3.6.2 Promise.race([ ])
__3.6.3 all([ ])/race([ ])의 변형
__3.6.4 동시 순회
_3.7 프라미스 API 복습
__3.7.1 new Promise( ) 생성자
__3.7.2 Promise.resolve( )와 Promise.reject( )
__3.7.3 then( )과 catch( )
__3.7.4 Promise.all([ ])과 Promise.race([ ])
_3.8 프라미스 한계
__3.8.1 시퀀스 에러 처리
__3.8.2 단일값
__3.8.3 단일 귀결
__3.8.4 타성
__3.8.5 프라미스는 취소 불가
__3.8.6 프라미스 성능
_3.9 정리하기
4장 제너레이터
_4.1 완전-실행을 타파하다
__4.1.1 입력과 출력
__4.1.2 다중 이터레이터
_4.2 값을 제너레이터링
__4.2.1 제조기와 이터레이터
__4.2.2 이터러블
__4.2.3 제너레이터 이터레이터
_4.3 제너레이터를 비동기적으로 순회
__4.3.1 동기적 에러 처리
_4.4 제너레이터 + 프라미스
__4.4.1 프라미스-인식형 제너레이터 실행기
__4.4.2 제너레이터에서의 프라미스 동시성
_4.5 제너레이터 위임
__4.5.1 왜 위임을?
__4.5.2 메시지 위임
__4.5.3 비동기성을 위임
__4.5.4 위임 ‘재귀’
_4.6 제너레이터 동시성
_4.7 썽크
__4.7.1 s/promise/thunk/
_4.8 ES6 이전 제너레이터
__4.8.1 수동 변환
__4.8.2 자동 변환
_4.9 정리하기
CHAPTER 5 프로그램 성능
_5.1 웹 워커
__5.1.1 워커 환경
__5.1.2 데이터 전송
__5.1.3 공유 워커
__5.1.4 웹 워커 폴리필
_5.2 SIMD
_5.3 asm.js
__5.3.1 asm.js 최적화
__5.3.2 asm.js 모듈
_5.4 정리하기
6장 벤치마킹과 튜닝
_6.1 벤치마킹
__6.1.1 반복
__6.1.2 Benchmark.js
_6.2 콘텍스트가 제일
__6.2.1 엔진 최적화
_6.3 jsPerf.com
__6.3.1 정상 테스트
_6.4 좋은 테스트를 작성하려면
_6.5 미시성능
__6.5.1 똑같은 엔진은 없다
__6.5.2 큰 그림
_6.6 꼬리 호출 최적화(TCO)
_6.7 정리하기
부록 A ES6 class
_부록 A.1 class
_부록 A.2 class의 함정
_부록 A.3 정적에서 동적으로?
_부록 A.4 정리하기
부록 B asynquence 라이브러리
_부록 B.1 시퀀스, 추상화 설계
_부록 B.2 asynquence API
_부록 B.3 값과 에러 시퀀스
_부록 B.4 프라미스와 콜백
_부록 B.5 이터러블 시퀀스
_부록 B.6 제너레이터 실행하기
_부록 B.7 정리하기
부록 C 고급 비동기 패턴
_부록 C.1 이터러블 시퀀스
_부록 C.2 이벤트 반응형
_부록 C.3 제너레이터 코루틴
_부록 C.4 순차적 프로세스 통신(CSP)
_부록 C.5 정리하기