자바스크립트의 핵심 원리, 언어적 특성을 정확하고 알기 쉽게 설명하는 책. 국내 개발환경, 입문/초급 개발자 수준에 맞춰 그림과 rule을 통해 이해하기 쉽게 설명하고, jQuery 1.0 소스 분석을 통해서 실제 프로젝트에서 사용된 각종 자바스크립트의 핵심 개념을 설명한다.
송형주 (지은이)의 말
모든 학문 분야가 마찬가지겠지만, 특히 IT 분야에서 새로운 지식을 습득할 때 가장 중요한 것은 바로 그 분야의 핵심 원리를 정확히 이해하는 것이다. 이러한 원리를 정확히 이해하지 않은 개발 관련 지식으로 프로젝트를 진행했다가는 초기에는 빠른 성과를 낼 수 있을지 모르지만, 결국에는 안다고 대충 넘어갔던 부분이 개발자의 발목을 잡을 것이며 이는 프로젝트 지연으로 이어질 수 있다.
필자가 처음에 자바스크립트 관련 공부를 처음 시작했을 때도 바로 이와 같은 실수를 범했었다. 자바스크립트를 배우기 전까지만 해도 필자의 주요 언어는 C, Java였다. 자바스크립트를 제대로 배우지 않은 여느 개발자처럼 필자는 자바스크립트가 굉장히 쉬운 언어이며, 무조건 코드를 가져다 쓰면 쉽게 개발할 수 있는 것으로 생각했었다. 처음에는 이런 식으로 결과물을 만들어 낼 수 있었지만, 점점 프로젝트 범위가 늘어나면서 자바스크립트 특성에 대해서 제대로 이해하지 않고 넘어갔던 사소한 부분들이 문제를 일으켰으며, 이 때문에 많은 고생을 했던 기억이 아직도 생생하다.
급기야 자바스크립트 언어를 통해 서버 기반 프로그래밍을 할 수 있게끔 해주는 Node.js 프로그래밍을 진행했을 때 필자는 결국 두 손을 들고 말았다. Node.js 개발 경험이 있는 개발자들은 아마 이해할 수 있을 것이다. 자바스크립트 언어의 특성을 제대로 이해하는 것이 얼마나 중요한 것인지를.
아무튼 그 결과 필자는 다시 자바스크립트 기본 문법부터 제대로 이해하며 공부를 시작했다. 역시나 필자가 안다고 넘어갔던 많은 자바스크립트의 문법들이 자세히 살펴보니 실제로는 정확히 아는 것이 아니었던 것이다. 학습법에 대해서 얘기할 때 가장 중요한 것이 바로 자신이 무엇을 모르는지를 정확히 파악해야 한다는 것이다. 그래야 무엇을 집중해서 공부해야 하는지를 정확히 파악할 수 있기 때문이다. 이후 필자는 자바스크립트 책을 정독하며 자바스크립트의 언어적 특성을 이해하기 위해 노력했다.
이 책은 필자의 이러한 노력의 산물이다. 요즘도 마찬가지이지만, 집필 당시에도 많은 자바스크립트 관련 서적이 출간되고 있었고 다양한 예제 및 설명을 다루고 있었지만, 자바스크립트의 문법과 언어적인 특성을 국내 개발자들의 입맛에 맞게 다룬 서적을 찾기 힘들었다. 그래서 필자는 이 책의 공저자인 고현준님과 함께 자바스크립트 입문자나 중급 개발자를 위해 자바스크립트 핵심을 가장 잘 설명한 국내 서적을 집필을 하기로 마음 먹게 됐고, 그 결과물이 바로 이 책이 된 것이다.
물론 이 책은 자바스크립트의 모든 것을 다룬 바이블은 아니다. 그러나 자바스크립트를 제대로 공부하고자 하는 독자들에게 여러 자바스크립트 응용 기술들을 소화할 수 있는 기초 체력을 기를 수 있게 도와주는 좋은 가이드가 될 것이라 믿어 의심치 않는다.
끝으로 이 책이 나오게 끔 항상 응원과 격려를 아끼지 않았던 나의 사랑하는 아내 현정이와 사랑스런 아들 승민에게 고마움을 전한다.
고현준 (지은이)의 말
필자가 처음으로 웹 개발이라는 것을 해 본 것은 십여 년 전이다. 그 때 필자는 대학교 초년생의 컴퓨터공학도였고, 당시 인기 있던 perl을 제치고 서버사이드 웹프로그래밍 언어로서 PHP와 ASP가 부상하고 있을 때였다. 당시에도 필자는 자바스크립트를 사용했던 기억이 있다. 로그인 확인 혹은 에러를 알리기 위한 팝업을 띄우기 위해 자바스크립트를 사용했던 것이다. window.open이라는 내장함수를 이용하였던 것으로 기억한다. 그때만 해도 자바스크립트는 이런 단순 기능을 지원하기 위해 존재하는 간단한 스크립트라고 생각했었다. 당연히 그때는, 십 년이 흐른 후에 필자가 다시 이 자바스크립트를 제대로 공부하기 시작하리라곤 상상도 못했다.
약 10년이 지나고 필자는 회사에서 우연히 파이어폭스 관련 프로젝트에 들어가서 업무를 보게 되었다. 당시에 파이어폭스 익스텐션을 만들기 위해 자바스크립트 기반의 XUL이라는 것을 알아야 했다. 그때도 이정도 스크립트 언어는 금방 익힐 수 있을 것이라고 생각했던 것 같다. 하지만 자바스크립트는 생각보다 단순한 것이 아니었다. 이 후에 jQuery라는 라이브러리를 알게 되고, 이 jQuery 소스를 열어보고 나서야, 자바스크립트를 제대로 익히기 위해서는 많은 시간이 필요하다는 것을 깨달았다.
function object(o) {
function F() {}
F.prototype = o;
return new F();
}
자바스크립트를 본격적으로 공부해 보고자 마음먹고, 인터넷에서 관련된 자료를 찾아보던 시절에 발견한 더글라스 크락포드의 코드이다. 글에 적혀 있는 설명으로는 객체를 상속받는 새로운 객체를 반환하는 함수라는데, 그때만 해도 필자는 이 세 줄짜리 코드가 도대체 무엇을 의미하는지 알 수가 없었고, 상당한 좌절을 겪어야 했다(참고로 이 코드는 책에 당연히(?) 설명이 되어 있다). 여러 가지 자료들을 인터넷에서 모아서 이 책을 같이 쓴 송형주 저자와 이 생경한 언어를 공부하기 시작했다. 공부를 하면서 하나씩 하나씩 의문이 풀릴 때 느꼈던 희열이 지금까지 기억에 남아 있는 걸 보면 자바스크립트가 어렵긴 어려웠었나 보다. 이 시기에 도움이 되었던 자료들은 모두 영어로 되어 있는 외국인이 쓴 자료들이 대부분이었고, 참고할 만한 서적 역시 많지 않았다. 이마저도 모두 외국의 유명저자가 쓴 번역서들이었다. 그때 이해하기 쉽게 잘 쓰여진 한국어 서적이 한 권만 있었더라도 우리는 훨씬 수월하게 자바스크립트를 익힐 수 있었을 것이다.
이에 자바스크립트의 핵심개념을 간과하지 않으면서 보다 이해하기 쉬운 책을 써 보자는 데 의견을 모았고, 여러 가지 어려움 끝에 이제서야 그간의 노력들이 빛을 보기 직전의 순간에 와 있다. 지금까지 함께 고생한 필자의 친구이자 형님인 송형주 저자와 한빛미디어 송성근 차장님께 감사의 말씀을 드린다. 그리고 결혼 직전에 원고 작업 때문에 큰 신경을 쓰지 못해 못내 미안했었는데, 진심으로 필자를 밀어준 아내에게도 고맙다는 말을 전하고 싶다.
부디 이 책을 읽은 독자들이 자바스크립트 언어의 이해에 작게나마 도움이 되길 바라며, 서문을 마친다.