JavaScript Ninja

자바스크립트 닌자 비급(Secrets of the JavaScript Ninja)

 

  • 소스코드 :
    이 책에서 사용된 예제에 대한 소스코드는 (책에는 등장하지 않은 일부 추가 코드를 포함하여) 이 책 원서의 웹페이지인 www.manning.com/SecretsoftheJavaScriptNinja에서내려받을 수 있습니다.

 

지은이 : 존 레식베어 바이볼트 / 옮긴이 : 강대명김광훈이의호

정가 : 33,000원

 

482쪽 / 판형 : 188×240 / 신판 1쇄

출간일 : 2014년 4월 4일

ISBN-10 : 978-89-6626-107-8

ISBN-13 : 978-89-6626-107-9

 

저자소개

존 레식(John Resig)

인정받는 자바스크립트 권위자이자 jQuery 창시자다. 그는 또한 프로세싱(Processing) 언어를 자바스크립트로 옮긴(port) Processing.js, 자바스크립트 테스트를 위한 QUnit, 그리고 분산 자바스크립트 테스팅 플랫폼인 TestSwarm을 포함해, 몇 가지 다른 오픈소스 도구와 프로젝트를 만들었다.
현재 칸 아카데미(Khan Academy)에서 컴퓨터 과학 교육이 한 단계 더 발전할 수 있도록 하기 위해서 일하고 있다. 뉴욕 브루클린에 거주하고 있으며, 여유시간에는 우키요에(일본식 목판 그림)를 연구하고 있다.

베어 바이볼트(Bear Bibeault)
100보드 텔레타이프를 이용해서 컨트롤 데이터 사이버(Control Data Cyber) 슈퍼컴퓨터에서 틱택토(Tic-Tac-Toe) 프로그램을 만들기 시작한 이래, 30년 넘게 소프트웨어 개발을 해왔다. 매닝(Manning)에서 출판한 Ajax in Practice, Prototype and Scriptaculous in Action, jQuery in Action의 공동저자다.

 

역자소개

강대명
파이널데이터에서 디지털 포렌식 툴을 개발했고, NHN에서 메일 서비스 백엔드를 개발했으며, 일 년 반의 백수 생활을 거치고 현재는 (주)카카오에서 카카오 홈 런처를 개발 중이다. 실력보다는 입이 앞서지만 개발을 좋아하는 개발자.

김광훈
NHN에서 한게임 관련 서비스와 네이버 게임 개발을 담당했으며, 현재는 (주)카카오에서 API와 회원 관련 서비스를 개발하고 있다. 여러 해 동안 자바스크립트를 다뤄왔지만 여전히 부족함이 많다고 느끼고 있어, 주변의 많은 고수들로부터 지혜를 전수 받기 위해 노력하고 있다. 백발이 되어서도 개발을 하면서 지내고 싶은 소망을 가지고 있다.

이의호
NHN에서 각종 기술 지원 업무를 담당했으며, 현재는 (주)카카오에서 카카오톡 서비스를 개발하고 있다. 마흔 이후에는 교육자의 길을 걸어가는 것을 목표로 하고 있으며, 사랑하는 아내와 고양이 두 마리와 같이 살고 있다. 공역한 책으로는 『자바스크립트 완벽 가이드(6판)』가 있다.

 

목차

1부 훈련 준비

1. 닌자 입문
1.1 살펴볼 자바스크립트 라이브러리들
1.2 자바스크립트 언어 이해하기
1.3 크로스 브라우저 고려하기
1.4 현재의 훌륭한 실천법들
__훌륭한 실천법: 테스팅
__훌륭한 실천법: 성능 분석
1.5 정리

2. 테스팅과 디버깅 갖추기
2.1 코드 디버깅
2.2 테스트 생성
2.3 테스트 프레임워크
2.4 테스트 스위트의 기본
2.5 정리

2부 견습 훈련

3. 함수가 핵심이다
3.1 함수형 언어는 무엇이 다른가
__자바스크립트의 함수형 언어 특징이 왜 중요한가
__비교자를 사용하여 정렬하기
3.2 함수 선언
3.3 호출
__인자(argument)에서 함수의 매개변수(parameter)까지
__함수로 호출
__메서드로 호출
__생성자로 호출
__apply() 메서드와 call() 메서드를 사용한 호출
3.4 정리

4 . 함수를 자유자재로 휘두르기
4.1 익명 함수
4.2 재귀
__이름을 가진 함수 내에서의 재귀
__메서드를 이용한 재귀
__참조가 사라지는 문제
__이름을 가진 인라인 함수
__callee 프로퍼티
4.3 함수 객체 가지고 놀기
__함수 저장하기
__연산 결과를 기억하는 함수
__배열 메서드를 속이기
4.4 가변인자 목록
__apply() 메서드를 이용해서 가변 길이의 인자를 전달하기
__함수 오버로딩
4.5 함수인지 확인하기
4.6 정리

5. 클로저와 가까워지기
5.1 클로저는 어떻게 동작하는가
5.2 클로저로 작업하기
__Private 변수
__콜백과 타이머
5.3 함수 콘텍스트 바인딩하기
5.4 부분 적용 함수
5.5 함수 동작 오버라이딩
__메모이제이션
__함수 래핑
5.6 즉시실행함수(Immediate function)
__임시 유효 범위와 private 변수
__루프
__라이브러리 래핑
5.7 요약

6. 객체 지향과 프로토타입
6.1 인스턴스 생성과 프로토타입
__객체 인스턴스 생성
__생성자와 객체 타입
__상속과 프로토타입 체인
__HTML DOM 프로토타입
6.2 실수하기 쉬운 것들!
__객체 확장하기
__Number 객체 확장하기
__네이티브 객체의 하위 클래스 만들기
__인스턴스 생성 이슈
6.3 보다 클래스다운 코드 작성하기
__함수 직렬화 검사
__하위 클래스의 인스턴스 만들기
__상위 메서드 보존하기
6.4 정리

7. 정규 표현식에 대한 논의
7.1 정규 표현식이 멋진 이유
7.2 정규 표현식 다시 살펴보기
7.3 정규 표현식 컴파일하기
7.4 매치된 부분을 캡처하기
__간단한 캡처 실행해 보기
__전역 정규 표현식을 이용해서 일치하는 부분을 찾기
__캡처 참조하기
__캡처되지 않는 그룹
7.5 함수를 이용해서 치환하기
7.6 정규 표현식을 이용해서 일상적인 문제를 해결하기
__문자열의 공백 제거하기
__개행 문자 찾기
__유니코드
__이스케이프 문자
7.7 정리

8. 스레드와 타이머 다루기
8.1 타이머와 스레드는 어떻게 동작하는가
__타이머 생성과 제거하기
__실행 중인 스레드 내에서의 타이머 실행
__타임아웃과 인터벌의 차이점
8.2 최소 타이머 지연시간과 신뢰성
8.3 비싼 연산 처리 다루기
8.4 중앙 타이머 관리
8.5 비동기 테스팅
8.6 요약

3부 닌자 훈련

9. 닌자 비술: 런타임 코드 평가
9.1 코드 평가 메커니즘
__eval() 메서드를 사용한 평가
__Function 생성자를 사용한 평가
__타이머와 평가
__전역 유효 범위에서 평가하기
__안전한 코드 평가
9.2 함수 “디컴파일”
9.3 코드 평가를 실제로 활용하기
__JSON 변환
__네임스페이스에 속한 코드를 가져오기
__자바스크립트 압축과 난독화
__동적으로 코드를 다시 작성하기
__관점-지향 스크립트 태그
__메타언어와 DSL
9.4 정리

10. With 문
10.1 “with”를 사용한다는 것은 무슨 의미일까
__with 유효 범위 내에서 프로퍼티 참조하기
__with 내에서 할당하기
__성능에 대한 고려
10.2 실제 예제
10.3 네임스페이스에 속한 코드를 가져오기
10.4 테스팅
10.5 with를 활용해 템플릿 기능 제공하기
10.6 정리

11. 크로스 브라우저 전략 수립하기
11.1 지원할 브라우저 선택하기
11.2 다섯 가지 주요 개발 고민 사항
__브라우저 버그와 브라우저 간의 차이점
__브라우저 버그 수정
__외부 코드 그리고 마크업과 공존하기
__누락된 기능
__리그레이션
11.3 구현 전략
__안전한 크로스 브라우저 수정
__객체 탐지
__기능 시뮬레이션
__테스트 할 수 없는 브라우저 문제
11.4 가정(assumptions) 줄이기
11.5 정리

12. 속성, 프로퍼티, CSS를 단칼에 베어버리자
12.1 DOM 속성과 프로퍼티
__크로스 브라우저 이름 문제
__이름 제약사항
__XML과 HTML의 차이점
__사용자 정의 속성의 작동 방식
__성능 고려 사항
12.2 크로스 브라우저 속성 이슈
__DOM id/name 확대
__URL 정규화
__style 속성
__type 속성
__탭 인덱스 문제
__노드 이름
12.3 스타일 속성과 관련한 골칫거리들
__내 스타일은 어디에 있지
__스타일 프로퍼티 이름
__float 스타일 프로퍼티
__픽셀 값 변환
__높이와 너비 측정하기
__불투명도를 꿰뚫어 보기
__알록달록한 바퀴를 가진 자전거 타기
12.4 평가된 스타일 얻기
12.5 정리

4부 달인이 되기 위한 훈련

13. 이벤트 처리 지뢰밭에서 살아남기
13.1 이벤트 핸들러를 설정하고 해제하기
13.2 이벤트 객체
13.3 이벤트 핸들러 관리
13.4 이벤트 발생시키기
13.5 버블링과 위임(delegation)
__이벤트를 상위 엘리먼트(acenstor)에 위임하기
__브라우저의 결함 우회하기
13.6 document ready 이벤트
13.7 정리

14. DOM 다루기
14.1 DOM에 HTML 주입하기
__HTML을 DOM으로 변환하기
__문서에 삽입하기
__스크립트 실행
14.2 엘리먼트 복제하기
14.3 엘리먼트 제거하기
14.4 텍스트 콘텐츠
14.5 정리

15. CSS 셀렉터 엔진
15.1 W3C 셀렉터 API
15.2 엘리먼트를 찾기 위해 XPath 사용하기
15.3 순수 DOM 구현
__셀렉터 문자열 파싱
__엘리먼트 찾기
__찾은 엘리먼트를 필터링하기
__재귀적으로 결과 합치기
__상향식 셀렉터 엔진
15.4 정리