자바스크립트를 깨우치다
: 객체로 풀어보는 JavaScript의 원리
저자 코디 린들리
역자 김태곤
출간일 2013년 7월 22일 (월)
정가 18,500원
페이지 204
판형 175 x 230
ISBN 978-89-94774-43-5 (93000)
원서정보 JavaScript Enlightenment
Live Code 링크 다운로드 (현재 계속 오류 등 수정중인 링크이며 출간까지 완료하도록 하겠습니다.)
책 소개
라이브러리 사용자에서 자바스크립트 개발자로
자바스크립트 라이브러리를 사용하고 있는 초중급·중급 자바스크립트 개발자라면, 『자바스크립트를 깨우치다』를 통해 자바스크립트라는 언어를 더욱 깊이 있게 이해하게 될 것이다. 『실전 jQuery 쿡북』(BJ퍼블릭)의 저자이자 자바스크립트 전문가인 코디 린들리가 쓴 이 책은 객체를 중점적으로 살펴보고, 미묘한 차이까지 전달하여 자바스크립트라는 언어에 대해 정확한 관점을 제시하고자 했다.
라이브러리와 프레임워크를 사용하면 웹 응용프로그램을 빠르게 만들 수 있으나, 오류가 발생하거나 성능상 문제가 나타나는 경우에는 결국 라이브러리와 프레임워크가 어떻게 동작하는지, 왜 그렇게 동작했는지 알고 있어야 한다. 자동차의 후드를 열 듯, 덮개를 열고 자바스크립트 내부의 원리를 손에 덕지덕지 묻힐 준비가 되었다면 이 책이 여러분을 도와줄 것이다.
이 책에서 다루는 내용
n 바로 실행해 볼 수 있는 코드와 함께 제공하는 ECMA-262 3판의 간결하고 이해하기 쉬운 요약본이다.
n 자바스크립트 객체 생성 과정을 면밀히 살펴본다.
n 복합 객체, 원시값, 스코프, 상속 등에 대해 배운다.
n 머리 객체의 중요성을 이해할 수 있다.
n 문자열, 숫자, 불리언 객체와 값을 다룬다.
n null 값과 내장 Math 객체 사용하는 법을 배울 것이다.
n 모질라의 자바스크립트 1.5 참조 문서보다 더 자세히 자바스크립트를 파헤친다.
"자바스크립트를 사용할 수는 있으나 깊이가 부족하다 느끼는 사람, 라이브러리는 사용해봤지만 라이브러리의 내부 코드는 이해하기 힘든 사람, 다른 언어를 사용하던 개발자로서 자바스크립트의 특성을 빠르게 파악하고 싶은 사람에게는 가치 있는 책이 될 것입니다."
-역자의 글 중에서
독자대상
초중급
저자소개
코디 린들리
클라이언트 엔지니어(혹은 프론트엔드 개발자)이자 플래시 개발자다. 웹 개발과 관련된 HTML, CSS, 자바스크립트, 플래시, 클라이언트측 성능 등에 대해 11년 이상 경험을 쌓으며 광범위한 전문 배경지식을 갖추었다. 클라이언트 개발 외에도 인터페이스/인터랙션 디자인을 하며 놀거나 글을 쓰고 여러 컨퍼런스에서 강연을 하곤 한다. 컴퓨터 앞에 앉아있지 않을 때는 아마도 아이다호 주 보이즈 시에서 아내, 아이들과 시간을 보내고 있거나 트라이애슬론 훈련, 스키, 산악 자전거, 암벽 등반, 독서, 영화 감상, 기독교 세계관에 대한 토론 등을 즐기고 있을 것이다.
역자소개
김태곤
자바스크립트를 주로 사용하는 프론트엔드 개발자. 현재는 뉴욕에 위치한 스타트업 기업 ThingDeamon에서 Fancy(http://www.fancy.com)라는 서비스를 만들고 있으며, NHN에 근무할 때는 스마트 에디터, 진도 자바스크립트 프레임워크, 네이버 지도, XpressEngine 등의 프로젝트에 참여했다. 새로운 것을 공부하는 것만큼 지식을 나누는 것도 좋아해서 매해 꾸준히 강의와 번역을 하고 있으며 『거침없이 배우는 자바스크립트』(지앤선), 『자바스크립트 쿡북』(한빛미디어), 『고성능 자바스크립트 그래픽스』(BJ퍼블릭) 등을 우리말로 옮겼다. 개인 블로그(http://mygony.com)와 트위터(@taggon)를 통해 웹 기술과 관련한 글을 전하고 있다.
목차
Chapter 1. 자바스크립트 객체
객체 만들기
자바스크립트 생성자는 객체 인스턴스를 생성하고 반환한다
자바스크립트 네이티브 / 내장 객체 생성자
사용자 정의 객체 생성자 함수
new연산자를 사용한 생성자 인스턴스 생성
리터럴을 사용한 값 생성하기
원시값(=단순값)
원시값 null, undefined, “string”, 10, true, false는 객체가 아니다
원시값은 어떻게 저장・복사되는가
원시값은 값 자체를 비교한다
문자열, 숫자, 불리언 원시값을 객체처럼 사용하면 객체처럼 동작한다
복합 객체(=합성 객체)
복합 객체는 어떻게 저장・복사되는가
복합 객체는 참조를 비교한다
복합 객체는 동적 속성을 포함한다
typeof 연산자
동적 속성 덕분에 객체 수정이 가능하다
생성자 인스턴스에는 자신의 생성자 함수를 가리키는 속성이 있다
객체가 특정 생성자 함수의 인스턴스인지 확인하기
생성자를 통해 만든 인스턴스에 인스턴스 속성 추가하기
“자바스크립트 객체”와 “Object( ) 객체”의 의미
Chapter 2. 객체와 속성 다루기
복합 객체는 자바스크립트 자료형의 대부분을 속성으로 포함할 수 있다
복합 객체에 다른 객체 포함하기
점 표기법과 각괄호 표기법을 사용한 객체 속성 접근
객체 속성 삭제하기
객체 속성의 참조를 찾는 법
hasOwnProperty를 사용해 프로토타입 체인에서 상속받은 속성인지 확인하기
in연산자를 사용해 객체가 주어진 속성을 포함하는지 확인하기
for in루프를 사용해 객체의 속성 탐색하기
호스트 객체 vs. 네이티브 객체
Underscore.js를 사용한 객체 확장
Chapter 3. Object( )
Object( ) 객체 사용
Object( ) 매개 변수
Object( )의 속성과 메소드
Object( ) 객체 인스턴스의 속성과 메소드
“객체 리터럴”을 사용한 Object( ) 객체 생성
모든 객체는 Object.prototype을 상속받는다
Chapter 4. Function( )
Function( ) 객체 사용
Function( ) 매개변수
Function( ) 속성과 메소드
Function( ) 객체의 인스턴스 속성과 메소드
함수는 항상 값을 반환한다
함수는 1급 클래스다(문법은 물론 값으로도)
함수에 매개변수 전달하기
this와 arguments
arguments.callee속성
함수 인스턴스의 length속성과 arguments.length
함수 매개변수 재정의
함수 완료 전에 반환하기(실행 종료)
함수를 정의하는 세 가지 방법
함수를 호출하는 네 가지 패턴
익명 함수
자기 호출 표현식
자기 호출 익명 함수
함수는 중첩될 수 있다
함수에 함수 전달하기 / 함수에서 함수 반환하기
함수가 정의되기 전에 함수를 호출하기(함수 호이스팅)
함수는 자신을 호출할 수 있다(재귀 호출)
Chapter 5. 머리/전역 객체
머리 객체의 사용
머리 객체에 포함된 전역 함수
머리 객체 vs. 전역 속성, 전역 변수
머리 객체 참조하기
머리 객체는 생략될 수 있다
Chapter 6. this 키워드
this의 사용
this의 값은 어떻게 정해지는가
중첩된 함수의 this는 머리 객체를 참조한다
중첩된 함수 문제는 스코프 체인을 사용해 우회하라
call( ) 또는 apply( )를 사용한 this값 설정
사용자 정의 생성자 함수 내에서 this키워드 사용하기
프로토타입 메소드 안의 this는 생성자 인스턴스를 참조한다
Chapter 7. 스코프와 클로저
자바스크립트의 스코프
자바스크립트에는 블록 스코프가 없다
함수 내에서 변수 선언 시 var를 사용해 스코프 문제 피하기
스코프 체인(문법적 스코프)
스코프 체인을 검색할 때는 가장 처음 발견한 값을 반환한다
스코프는 함수를 정의할 때 결정된다
스코프 체인이 클로저를 만든다
Chapter 8. 함수의 프로토타입
프로토타입 체인
prototype속성이 왜 중요한가
모든 Function( ) 인스턴스에는 prototype속성이 있다
prototype속성은 Object( ) 객체
생성자 함수를 통해 만든 인스턴스는 생성자 함수의 prototype속성과 연결되어 있다
프로토타입 체인의 끝은 Object.prototype이다
프로토타입 체인은 체인에서 제일 먼저 찾은 속성을 반환한다
prototype속성을 새 객체로 대체하면 기본 constructor속성이 삭제된다
프로토타입에서 상속한 속성은 가장 최근의 값을 사용한다
prototype속성을 새 객체로 대체하면 이전에 만든 인스턴스는 갱신되지 않는다
사용자 정의 생성자도 네이티브 생성자처럼 프로토타입을 상속할 수 있다
상속 체인 만들기
Chapter 9. Array( )
Array( ) 객체의 사용
Array( ) 매개변수
Array( ) 속성과 메소드
Array객체 인스턴스의 속성과 메소드
배열 만들기
배열에 값을 추가하고 갱신하기
크기와 색인
미리 설정한 크기로 배열 만들기
배열의 크기를 설정하면 값을 추가하거나 제거할 수 있다
다른 배열을 포함한 배열(다중 배열)
배열을 앞뒤로 훑기
Chapter 10. String( )
String( ) 객체의 사용
String( ) 매개변수
String( ) 속성과 메소드
String객체 인스턴스의 속성과 메소드
Chapter 11. Number( )
Number( ) 객체의 사용
정수와 실수
Number( ) 매개변수
Number( ) 속성
Number객체 인스턴스의 속성과 메소드
Chapter 12. Boolean( )
Boolean( ) 객체의 사용
Boolean( ) 매개변수
Boolean( )의 속성과 메소드
Boolean객체 인스턴스의 속성과 메소드
false복합 객체는 true로 변환된다
일부 값은 false이고, 그 외는 true다
Chapter 13. 원시 문자열, 숫자, 불리언값 다루기
원시/리터럴 값은 속성에 접근할 때 객체로 변환된다
평소에는 원시 문자열, 숫자, 불리언값을 사용하라
Chapter 14. Null
null값 사용
typeof null==“object”
Chapter 15. BUndefined
undefined값
자바스크립트 ECMAScript 3이상에서 undefined는 전역 변수로 선언된다
Chapter 16. Math 함수
내장 Math객체
Math객체의 속성과 메소드
Math는 생성자 함수가 아니다
Math는 변경할 수 없는 상수를 포함한다
부록 A. 복습
부록B. 마치며
이 책의 구성
라이브러리는 어떤 면에선 이롭지만 또 어떤 면에서는 해로운 “블랙박스” 증후군을 야기한다. 여러 작업들이 빠르고 효율적으로 진행되지만 사용자는 이 동작이 내부적으로 어떻게 진행되는지 그리고 왜 그렇게 되는지 알 수 없다. 그래서 문제가 생기거나 성능이 잘 나오지 않을 때 어떤 부분이 어떻게・왜 문제가 되는지 모른다. 웹 응용프로그램(혹은 근사한 가입폼)을 만들 때 자바스크립트 라이브러리나 프레임워크를 사용하려는 사람은 누구라도 보닛을 열고 엔진이 어떻게 동작하는지 살펴보아야 한다. 이 책은 보닛을 열고 자바스크립트 그 자체를 손에 묻히고자 하는 사람들을 위한 것이다.
모질라 재단은 자바스크립트 1.5에 대한 가장 최신의 완벽한 참조 문서를 제공하지만, 사용자들이 참조 문서의 내용을 따라가기 쉽도록 하나의 관점에서 작성된 이해하기 쉬운 문서는 없다. 이 책이 모질라의 참조 문서가 다루는 것 이상의 개념을 설명하는, 자바스크립트에 대해 “여러분이 꼭 알아야 할 것을 알려주는” 매뉴얼이 될 것이다.
프로그래밍 언어에 대해 다루는 고급 기술 서적 중에는 획일적인 예제와 방향성 없는 이야기만 늘어놓는 경우가 많다. 필자는 방향을 제시하는 간단한 설명을 곁들이는 한편 바로 실행해 볼 수 있는 실제 코드를 제공했다. 이 책에서 도입했던 시도를 “기술적 저미기(technical thin-slicing)”이라는 용어로 설명하곤 하는데, 이 용어는 복잡한 주제를 쉽게 이해할 수 있는 작은 개념으로 나누어 최소한의 글로 설명하고, 실용적이며 초점이 분명한 예제 코드로 설명을 뒷받침한다는 뜻을 내포하고 있다.
이 책을 읽어야 할 사람
이 책은 두 부류의 사람들을 위한 책이다. 첫 번째 부류는, 자바스크립트 객체를 깊이 있게 배움으로써 자바스크립트에 대한 이해를 공고히 하고 싶은 초급을 벗어난 중급 자바스크립트 개발자다. 두 번째 부류는, 자바스크립트 라이브러리를 매우 잘 사용하며 이제는 커튼 뒤에 숨겨진 면을 살펴보고 싶은 자바스크립트 라이브러리 전문가다. 이 책은 프로그래밍이나 자바스크립트 라이브러리 혹은 자바스크립트를 이제 시작한 초급자들에게는 적합하지 않다.
출판사 리뷰
이 책의 목적은 네이티브 자바스크립트 객체를 면밀히 살펴보고, 복합값, 원시값, 범위, 상속, 머리 객체(head object) 등의 미묘한 차이도 알아보는 방식을 통해 독자들에게 자바스크립트의 정확한 세계관을 전달하는 것이다. 이 책은 ECMAScript 3판 명세의 이해하기 쉬운 축소판이 되고자 자바스크립트 객체의 특성에 집중하였다.
책에 나오는 예제 코드를 자세히 살펴보자. 처음 설명을 보고서 헷갈리더라도 걱정하지 말고, 코드를 살펴보고 또 수정해 보고 코드의 주석도 다시 읽어보자. 그리고 글에서 설명한 개념이 명확해질 때까지 이 과정을 반복해보자. 프로그래밍 개념을 체득할 때 필요한 것은 설명이 잘 되어 있는 코드를 하나씩 완료해가는 것이다.
여러분이 자바스크립트 라이브러리(jQuery, MooTools, Zepto, YUI, Dojo 등)만 사용해 본 디자이너나 개발자라면, 이 책을 통해 자바스크립트 라이브러리 사용자에서 자바스크립트 개발자로 거듭 났으면 하는 바람이다.
누구나 쉽게 배우는 파이썬 프로그래밍 (3) | 2013.07.29 |
---|---|
APT, 지능형 지속 위협 (0) | 2013.06.14 |
나쁜 데이터 핸드북: 19인의 데이터 과학자가 알려주는 (0) | 2013.06.03 |
댓글 영역