중급 자바스크립트 개발자를 넘어 자바스크립트 마스터를 꿈꾸는 이들을 위한
『You Don’t Know JS』 시리즈
자바스크립트는 웹 초창기 시절부터 사람들이 대화하듯 웹 콘텐츠를 소비할 수 있게 해준 기반 기술이었다. 20년 가까이 흐른 지금은 엄청난 규모로 기술적 역량이 성장하였고, 세계에서 가장 널리 사용되는 소프트웨어 플랫폼이라 불리는 웹의 심장부를 형성하는 핵심 기술이 되었다.
자바스크립트는 처음 시작하고 실행하기가 가장 쉬운 언어지만, 다른 언어보다 완전히 숙달한 사람은 훨씬 적다. C/C++ 등으로 완전한 프로그램을 짜려면 언어 자체를 깊이 있게 알고 있어야 하지만, 자바스크립트는 언어 전체 능력 중 일부를 수박 겉핥기 정도만 알고 사용해도 웬만큼 서비스가 가능한 프로그램을 만들어낼 수 있어서다.
바로 이 부분이 자바스크립트의 모순이자 아킬레스건이고, 이 책에서 다루는 주제이기도 하다. 『You Don’t Know JS』 시리즈는 자바스크립트의 모든 것, 그중 특히 착각하기 쉽고 이해하기 어려운 부분을 깊고 철저하게 파고든다.
두 번째 You Don’t Know JS 시리즈 ‘this와 객체 프로토타입, 비동기와 성능’
자바스크립트, 그중에서도 특히 ‘어려운 부분’을 심층적으로 다루는 <You Don’t Know JS> 시리즈의 두 번째 책이다. 자바스크립트 언어에서 가장 헷갈리고 난해한 동시에 그 무엇보다도 중요한 기본 개념인 this 바인딩과 프로토타입 체인, 그에 못지않게 난해한 비동기와 성능, 이 책은 이 두 주제를 집중적으로 파고든다.
‘this와 객체 프로토타입’에서는 호출부 코드에 따라 this가 어떻게 바인딩되어 객체를 참조하고, 자바스크립트 믹스인 패턴으로 클래스를 어떻게 흉내 내는지, 프로토타입 체계가 객체 간 링크를 형성하는 방법을 소개한다. ‘비동기와 성능’에서는 비동기 프로그래밍을 다루는 자바스크립트의 과거와 현재부터 프라미스로 제어의 역전 문제를 해결하고 콜백 지옥을 탈출하는 법, 프로그램의 벤치마킹과 튜닝에 필요한 리소스와 테크닉을 설명한다. 이 책과 함께라면 자바스크립트에서 가장 모호하고, 숨겨진 정교한 메커니즘 이해에 한 걸음 더 다가갈 수 있을 것이다.
『You Don’t Know JS』 시리즈 도서
대상 독자
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 정리하기
두 번째 You Don’t Know JS 시리즈 ‘this와 객체 프로토타입, 비동기와 성능’
자바스크립트, 그중에서도 특히 ‘어려운 부분’을 심층적으로 다루는 <You Don’t Know JS> 시리즈의 두 번째 책이다. 자바스크립트 언어에서 가장 헷갈리고 난해한 동시에 그 무엇보다도 중요한 기본 개념인 this 바인딩과 프로토타입 체인, 그에 못지않게 난해한 비동기와 성능, 이 책은 이 두 주제를 집중적으로 파고든다.
‘this와 객체 프로토타입’에서는 호출부 코드에 따라 this가 어떻게 바인딩되어 객체를 참조하고, 자바스크립트 믹스인 패턴으로 클래스를 어떻게 흉내 내는지, 프로토타입 체계가 객체 간 링크를 형성하는 방법을 소개한다. ‘비동기와 성능’에서는 비동기 프로그래밍을 다루는 자바스크립트의 과거와 현재부터 프라미스로 제어의 역전 문제를 해결하고 콜백 지옥을 탈출하는 법, 프로그램의 벤치마킹과 튜닝에 필요한 리소스와 테크닉을 설명한다. 이 책과 함께라면 자바스크립트에서 가장 모호하고, 숨겨진 정교한 메커니즘 이해에 한 걸음 더 다가갈 수 있을 것이다.
자료명 | 등록일 | 다운로드 |
---|---|---|
예제소스(비동기와 성능) | 2023-01-13 | 다운로드 |
예제소스(this와 객체 프로토타입) | 2023-01-13 | 다운로드 |