코어 자바스크립트

핵심 개념과 동작 원리로 이해하는 자바스크립트 프로그래밍

자바스크립트의 근간을 이루는 핵심 이론들을 정확하게 이해하는 것을 목표로 합니다!

최근 웹 개발 진영은 빠르게 발전하고 있으며, 그 중심에는 자바스크립트가 있다고 해도 결코 과언이 아닙니다. ECMAScript2015 시대인 현재에 이르러서도 ES5에서 통용되던 자바스크립트의 핵심 이론은 여전히 유효하며 매우 중요합니다.

《코어 자바스크립트》는 자바스크립트의 근간을 이루는 핵심 이론들을 정확하게 이해하는 것을 목표로 합니다. 기본 이론들 중 ES6에서도 중요성이 높은 핵심 개념을 위주로 다루며, 테크닉이나 요령보다는 원리를 이해하는 데 목적을 두고 있습니다.

 

★ 이 책에서 다루는 내용 ★

  • 변수, 데이터, 불변성
  • 실행 컨텍스트와 스코프, 호이스팅
  • this의 개념 및 상황별 this 바인딩 원리
  • 콜백함수
  • 클로저
  • 프로토타입과 클래스 상속

 

추천사

“이 책에서 소개되는 내용만으로 끝나는 것은 아닙니다. 모든 것을 다루는 책도 아닙니다. 또한 일부 내용은 최신 자바스크립트 엔진의 작동 방식과 다른 경우도 있습니다. 하지만 이 책을 통해 다양한 실무 환경 속에서 자바스크립트의 전반적인 구동 원리를 파악해서 앞으로 나아갈 수 있는 기반을 만들 수 있으리라 생각합니다.”

— Bsidesoft 대표 맹기완

 

도서 상세 이미지

정재남

성균관대학교에서 물리학을 전공했다. 자바스크립트, jQuery, ReactJS 등을 주제로 다수의 오프라인 강의를 했으며, 온라인 동영상 강의(https://www.inflearn.com/instructors/46840/courses)도 진행 중이다. 현재 엔씨소프트의 프런트엔드 개발자로 채팅 기반 협업 툴을 개발하고 있다.

  • ▣ 01장: 데이터 타입
    • 1-1 데이터 타입의 종류
    • 1-2 데이터 타입에 관한 배경지식
      • 1-2-1 메모리와 데이터
      • 1-2-2 식별자와 변수
    • 1-3 변수 선언과 데이터 할당
      • 1-3-1 변수 선언
      • 1-3-2 데이터 할당
    • 1-4 기본형 데이터와 참조형 데이터
      • 1-4-1 불변값
      • 1-4-2 가변값
      • 1-4-3 변수 복사 비교
    • 1-5 불변 객체(immutable object)
      • 1-5-1 불변 객체를 만드는 간단한 방법
      • 1-5-2 얕은 복사와 깊은 복사
    • 1-6 undefined와 null
    • 1-7 정리
    •  
  • ▣ 02장: 실행 컨텍스트
    • 2-1 실행 컨텍스트란?
    • 2-2 VariableEnvironment
    • 2-3 LexicalEnvironment
      • 2-3-1 environmentRecord와 호이스팅(hoisting)
      • 2-3-2 스코프, 스코프 체인, outerEnvironmentReference
    • 2-4 this
    • 2-5 정리
    •  
  • ▣ 03장: this
    • 3-1 상황에 따라 달라지는 this
      • 3-1-1 전역 공간에서의 this
      • 3-1-2 메서드로서 호출할 때 그 메서드 내부에서의 this
      • 3-1-3 함수로서 호출할 때 그 함수 내부에서의 this
      • 3-1-4 콜백 함수 호출 시 그 함수 내부에서의 this
      • 3-1-5 생성자 함수 내부에서의 this
    • 3-2 명시적으로 this를 바인딩하는 방법
      • 3-2-1 call 메서드
      • 3-2-2 apply 메서드
      • 3-2-3 call / apply 메서드의 활용
      • 3-2-4 bind 메서드
      • 3-2-5 화살표 함수의 예외사항
      • 3-2-6 별도의 인자로 this를 받는 경우(콜백 함수 내에서의 this)
    • 3-3 정리
    •  
  • ▣ 04장: 콜백 함수
    • 4-1 콜백 함수란?
    • 4-2 제어권
      • 4-2-1 호출 시점
      • 4-2-2 인자
      • 4-2-3 this
    • 4-3 콜백 함수는 함수다
    • 4-4 콜백 함수 내부의 this에 다른 값 바인딩하기
    • 4-5 콜백 지옥과 비동기 제어
    • 4-6 정리
    •  
  • ▣ 05장: 클로저
    • 5-1 클로저의 의미 및 원리 이해
    • 5-2 클로저와 메모리 관리
    • 5-3 클로저 활용 사례
      • 5-3-1 콜백 함수 내부에서 외부 데이터를 사용하고자 할 때
      • 5-3-2 접근 권한 제어(정보 은닉)
      • 5-3-3 부분 적용 함수
      • 5-3-4 커링 함수
    • 5-4 정리
    •  
  • ▣ 06장: 프로토타입
    • 6-1 프로토타입의 개념 이해
      • 6-1-1 constructor, prototype, instance
      • 6-1-2 constructor 프로퍼티
    • 6-2 프로토타입 체인
      • 6-2-1 메서드 오버라이드
      • 6-2-2 프로토타입 체인
      • 6-2-3 객체 전용 메서드의 예외사항
      • 6-2-4 다중 프로토타입 체인
    • 6-3 정리
    •  
  • ▣ 07장: 클래스
    • 7-1 클래스와 인스턴스의 개념 이해
    • 7-2 자바스크립트의 클래스
    • 7-3 클래스 상속
      • 7-3-1 기본 구현
      • 7-3-2 클래스가 구체적인 데이터를 지니지 않게 하는 방법
      • 7-3-3 constructor 복구하기
      • 7-3-4 상위 클래스에의 접근 수단 제공
    • 7-4 ES6의 클래스 및 클래스 상속
    • 7-5 정리
    • 7-6 마치며
  • 13쪽, 5번째 줄

    별도의 변수 영역을 마련하고(@7104 ~ ?), 그 영역의 주소를 @7104에 저장합니다.

    ==>

    별도의 변수 영역을 마련하고(@8104~?), 그 영역의 주소 정보(@8104~?)를 @5003에 저장한 다음, @5003을 @7104에 저장합니다.

  • 16쪽, 밑에서 7번째 줄

    3번째 줄에서는

    ==>

    4번째 줄에서는

  • 17쪽, 1번째 줄

    4번째 줄에서는

    ==>

    5번째 줄에서는

  • 17쪽, 밑에서 5번째 줄

    @1003의 값이

    ==>

    @1002의 값이

  • 25쪽, 3번째 줄

    예제 2-12의 copyObject 함수는

    ==>

    예제 1-12의 copyObject 함수는

  • 32쪽, 하단 박스의 첫 번째 줄

    위 (1)의

    ==>

    예제 1-19의 (1)의

  • 39쪽, 본문 3번째 줄

    a 변수의 값을 출력하고 나면

    ==>

    a 변수에 값 3을 할당하고 나면

  • 47쪽, 8번째 줄

    4번째 줄: 변수 b에

    ==>

    5번째 줄: 변수 b에

  • 54쪽, 10번째 줄

    선언된 시점의 LexicalEnvironemnt

    ==>

    선언된 시점의 LexicalEnvironment

  • 55쪽, 9번째 줄

    저장합니다. outerEnvironment에는

    ==>

    저장합니다. outerEnvironmentReference에는

  • 55쪽, 밑에서 8번째 줄

    outerEnvironment에는 inner 함수가

    ==>

    outerEnvironmentReference에는 inner 함수가

  • 73쪽, 본문 첫 번째 줄

    (3): obj2.innerMethod입니다.

    ==>

    (3): obj2입니다.

  • 84쪽, 예제 코드의 8번째 줄

    Array.prototype.every.call(str, function(c) { return char !== ' '; }); // false
    

    ==>

    Array.prototype.every.call(str, function(char) { return char !== ' '; }); // false
    
  • 84쪽, 예제 코드의 10번째 줄

    Array.prototype.some.call(str, function(c) { return char === ' '; }); // true
    

    ==>

    Array.prototype.some.call(str, function(char) { return char === ' '; }); // true
    
  • 84쪽, 예제 코드의 12번째 줄

    var newArr = Array.prototype.map.call(str, function(c) { return char + '!'; });
    

    ==>

    var newArr = Array.prototype.map.call(str, function(char) { return char + '!'; });
    
  • 100쪽, 밑에서 7번째 줄

    4-1-4절에서 “콜백 함수도

    ==>

    3-1-4절에서 “콜백 함수도

  • 106쪽, 4번째 줄

    4-2-4-2절에서 이미 소개한

    ==>

    3-2-4절에서 이미 소개한

  • 139쪽, 본문 4번째 줄

    반환될 함수 내부에서는, 5번째 줄에서

    ==>

    반환될 함수 내부에서는, 4번째 줄에서

  • 140쪽, '참고' 상자의 본문 5번째 줄

    예제 5-12를 다음과 같이

    ==>

    예제 5-15를 다음과 같이

  • 141쪽, 페이지 상단 예제 코드의 5번째 줄

    var addPartial = partial2(add, 1, 2, _, 4, 5, _, _, 8, 9);
    

    ==>

    var addPartial = partial3(add, 1, 2, _, 4, 5, _, _, 8, 9);
    
  • 194쪽, 예제 7-12의 7번째 줄을 삭제

    Bridge.prototype.constructor = SuperClass;
    

    ==>

    (삭제)