본문 바로가기

공부/책

6. JavaScript Patterns (스토얀 스테파노프)


자바스크립트 코딩 기법과 핵심 패턴 JavaScript Patterns
국내도서
저자 : 스테얀 스테파노프 / 김준기,변유진역
출판 : 인사이트 2011.11.03
상세보기


초판 1쇄 발행이 2011년도.

2016년에 읽는다 ^^;


---

함수와 메서드

객체의 프로퍼티가 함수일 경우 이를 메서드라고 부른다.


2장. 기초

2.2 전역 변수 최소화

전역 변수의 문제점: 앱 내의 다른 영역에서 목적이 다른 전역 변수를 동일한 이름으로 정의할 경우 서로 덮어쓰게 됨

전략: 네임스페이스 패턴, 즉시 실행 함수 활용, 변수 선언 시 항상 var 사용


var a = b = 0;

a는 지역변수, b는 전역변수임


전역 객체에 대한 접근

window라는 식별자를 직접 사용하지 않고 전역 객체에 접근하고 싶다면,

var global = (function() { return this; })();


호이스팅: 분산된 var 선언의 문제점

함수 내 여기저기서 여러 개의 var선언을 사용할 수 있지만, 실제로 함수 상단에서 선언된 것과 동일하게 동작(선언 시 값 할당했더라도 상단에서 선언만) 


==보다는 ===쓰도록 하기


주석다는 습관을 들이자.

함수의 매개변수, 반환값이나 흥미로운 알고리즘같은거, 함수 용도

에어비앤비 주석스타일

/**
 * make() returns a new element
 * based on the passed in tag name
 *
 * @param {String} tag
 * @return {Element} element
 */
function make(tag) {

  // ...stuff...

  return element;
}



3장. 리터럴과 생성자

3.2 사용자 정의 생성자 함수

생성자 함수에 메서드 추가시, 생성자 호출할 때마다 메모리에 새로운 함수 생김. 공통 메서드는 프로토타입에 추가.


3.4 배열 리터럴

배열 판별은 typeof []가 아니라 Array.isArray([]) 


3.6 정규 표현식 리터럴

생성자(RegExp)보다는 정규식 리터럴을 쓰는게 낫다.

g: 전역 매칭

m: 여러 줄 매칭

i: 대소문자 구분없이 매칭


4장. 함수

4.1 배경 지식

function expression(or anonymous function)과 function declaration의 가장 큰 차이점은 호이스팅이다.

//함수 선언문

function foo() {console.log('foo');};

//함수 표현식

var bar = function () {console.log('bar');}; 

이렇게 선언 및 정의 하고 상단에서 호출하면 foo함수만 실행된다.

함수선언문은 정의된 함수 모두 호이스팅됨

함수 표현식은 선언부(var bar;)만 호이스팅됨


4.8 함수 프로퍼티 - 메모이제이션(Memoization) 패턴

함수에 프로퍼티를 추가하여 결과(반환 값)를 캐시하면 다음 호출 시점에 복잡한 연산을 반복하지 않을 수 있다.




5장. 객체 생성 패턴

5.1 네임스페이스 패턴

네임스페이스는 프로그램에서 필요로 하는 전역 변수의 개수를 줄이는 동시에 과도한 접두어를 사용하지 않고도 이름이 겹치지 않게 해준다.


5.4 모듈패턴

모듈 패턴을 늘어나는 코드를 구조화하고 정리하는 데 도움이 되기 때문에 널리 쓰인다.

모듈패턴은 다음 패턴들 여러 개를 조합한 것이다.

- 네임스페이스 패턴

- 즉시 실행 함수

- 비공개 멤버와 특권 멤버

- 의존 관계 선언