상세 컨텐츠

본문 제목

자바스크립트를 깨우치다: 객체로 풀어보는 JavaScript의 원리

전체 출간 도서

by 비제이퍼블릭 2013. 7. 4. 16:53

본문

 

 

자바스크립트를 깨우치다

 

: 객체로 풀어보는 JavaScript의 원리

 

저자 코디 린들리

역자 김태곤

 

출간일 2013722()

정가 18,500

 

페이지 204

판형 175 x 230

ISBN 978-89-94774-43-5 (93000)

원서정보 JavaScript Enlightenment

 

예약판매 YES24  인터파크도서 

 

Live Code 링크 다운로드 (현재 계속 오류 등 수정중인 링크이며 출간까지 완료하도록 하겠습니다.)

 

 

Live Code.docx

 

 

 

책 소개

 

 

라이브러리 사용자에서 자바스크립트 개발자로

 

자바스크립트 라이브러리를 사용하고 있는 초중급·중급 자바스크립트 개발자라면, 『자바스크립트를 깨우치다』를 통해 자바스크립트라는 언어를 더욱 깊이 있게 이해하게 될 것이다. 『실전 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 )만 사용해 본 디자이너나 개발자라면, 이 책을 통해 자바스크립트 라이브러리 사용자에서 자바스크립트 개발자로 거듭 났으면 하는 바람이다.

 

관련글 더보기

댓글 영역

  • 프로필 사진
    2013.07.04 17:07
    제목에 오타가 있네요. JvaScript의 원리 --> JavaScript의 원리
    • 프로필 사진
      2013.07.05 11:01 신고
      안녕하세요 독자님, 알려주셔서 감사합니다.^^ 블로그 제목은 수정을 하였는데 Facebook 게시물은 바뀌지가 않네요..^^; 감사합니다!
  • 프로필 사진
    2014.09.18 13:21
    궁금한게 있습니다.
    왜 소스 파일을 제공하지 않고 링크를 담은 워드 문서를 제공하는 건가요?
    • 프로필 사진
      2014.09.18 15:47 신고
      원출판사에서 소스 파일을 제공하고 있지 않습니다. 대신 도서의 각 부분에 링크를 제공하고 있는데, 저희가 독자분들께 조금이나마 도움이 될 수 있도록 워드에 정리를 했습니다.