자바스크립트 패턴과 테스트
1
테스트를 기반으로 JS 패턴을 소개하고 설명하고 있으며, 각 패턴마다 ‘SOLID’ 원칙을 적용해 볼 수 있기 때문에 테스트와 패턴, 두가지 토끼를 다 잡을 수 있다.
2
반면, 테스트와 패턴에 대한 이해가 없으면 책의 난이도가 급격히 상승한다는 단점도 존재한다.
-
[…] 이 객체의 고유 프로퍼티가 아닌 까닭에 자바스크립트 엔진은 chimp의 프로토타입 체인을 따라 ape까지 올라가 결국 primate에서 이 프로퍼티를 발견한다. 만약 프로토타입 체인을 다 뒤져봐도 없으면 undefined를 반환한다.
-
[…] 자바스크립트에서
instanceof
연산자는 우변 피연산자의 프로토타입이 좌변 피연산자의 프로토타입 체인에 있는지 찾아본다. -
[…] 결국 ‘폭넓은 어휘력(vocabulary)을 소유한 개발자가 더 우아한 코드를 작성할 수 있다’는 게 바로 이 장의 첫 번째 주제이다.
-
콜백은 나중에 실행할 부차 함수(Second function)에 인자로 넣는 함수다. 여기서 콜백이 실행될 ‘나중’ 시점이 부차 함수의 실행 완료 이전이면 동기(Synchronous), 반대로 실행 완료 이후면 비동기(asynchronous)라고 반다. […] 프라미스는 비동기 콜백에만 사용된다. […] 하늘이 무너져도 솟아날 구멍은 있는 법! 먼저 익명 함수에 이름을 붙여 떼어 놓기만 해도 상황은 훨씬 호전된다. 콜백 함수에서 this 변수를 참조할 때는 특별히 조심해야 한다. 전혀 엉뚱한 값을 참조할 수 있기 때문이다.
-
Promise는 비동기 작업과 그 결과를 갖고 해야 할 일을 캡슐화한 객체로서, 작업 완료 시 이 객체에 캡슐화한 콜백을 호출한다. 콜백은 두 종류, 즉 성공 콜백과 실패 콜백으로 나뉜다.
-
“이룸 Promise를 생성하는 함수를 Promise.fulfill이 아니라 Promise.resolve라고 부른단 말이지. Promise는 꼭 어떤 값으로 이루어져 귀결시켜야 한단 법이 없기 때문이다. […] ‘귀결되었다’는 말은 프라미스 숙명이 어느 한쪽으로 결정됐단 뜻이거든. 하나의 값으로 못 박히든지, 아니면 다른 프라미스의 궁극적인 숙명이 되는개지”
-
부분 적용 함수가 커링(currying)과 밀접하게 연관된 개념이라는 사실을 그는 곧 깨닫는다. 사이가 너무 가깝다 보니 둘을 하나로 뭉뚱그려 이야기할 떄도 잦다. 커링은 인자를 여럿 취하는 함수를 인자 하나만 받는 함수 여러 개로 해체하는 기법이다. […] 부분 적용 함수는 […] 이전 단계에서 생성된 커링 요소에 뭔가 더 보태서 결국 이장 앞부분에서 소개했던 부분 적용 함수 버전과 기능이 같은 함수로 만드는 것이다.
-
[…] 이러한 패턴을 메모이제이션 패턴(기억 패턴)이라고 한다. 보통 함수 호출 시 전달받은 인자를 키로 그 반환 결과를 어떤 구조체에 저장하고, 같은 키를 인자로 다시 함수를 호출하면 저장해둔 값을 꺼내어 바로 반환한다. […] 패턴 구현 시 다음 두 가지를 단위 테스트로 꼭 확인하라. 1) 반환값을 기억할 함수 또는 자원은 어떤 키를 기준으로 맨 처음 호출할 때 한 번만 접근한다. 2) 그 이후로 같은 키를 기억한 함수를 다시 호출하면 맨 처음 호출했을 때와 같은 값을 반환한다.
-
자바스크립트는 싱글 스레드로 움직이는 다른 언어보다 객체 리터럴과 즉시 실행 모듈 같은 싱글톤 패턴을 올바르게 구현하기 쉽다.
-
팩토리(factory)는 객체를 단순히 찍어내는 함수다. […] 그냥 new나 일반 함수를 호출해서 만들어 쓰면 될 텐데, 굳이 팩토리를 이용하는 이유는 뭘까? 한마디로 ‘제어’와 ‘추상화’를 강화하기 위해서다.