더북(TheBook)

그러나 얼핏 편리해 보이는 new 키워드 자동 삽입은 사실 개발자의 실수를 모면하게 해줄 뿐이다. 다음 코드를 보자.


var jester = Marsupial('제스터', false);
var merlin = new Marsupial('멀린', false);

전자는 new가 빠져 있지만, 두 줄 모두 Marsupial 앞에 new를 전제하고 객체를 생성한다. 생성자 함수명 첫 글자는 대문자여야 한다는 규칙이 있다면 jester 인스턴스 생성 코드는 오류처럼 보인다.

일관성은 곧 믿음성이라 생각하는 우리는 예제 3-4의 보호 장치가 더 낫다고 본다. new가 빠졌을 때 예외가 발생하면 Marsupial 객체 인스턴스가 모두 같은 방식으로 생성되었다고 확신할 수 있고, 결국 보다 일관적이고 분명한 코드베이스를 구축할 수 있다. 또한, 테스트 주도 개발과 접목해 new가 빠져 발생한 예외를 빠짐없이 곧바로 알아볼 수 있는 이점도 있다.

Note.

자동 세미콜론 삽입은 개발자가 실수해도 별 탈 없게 내버려 두고 코드베이스의 일관성을 해치는 자바스크립트의 편의 기능이다. 더글라스 크락포드의 표현을 빌리면, 절대로 의존해선 안 될 자바스크립트의 몹시 나쁜 부분이다(《자바스크립트 핵심 가이드(한빛미디어, 2008)》). 자동 new 삽입은 이 정도까진 아니지만, 같은 맥락에서 삼가는 게 좋다.

 

new 객체 생성 패턴을 이용하면 정의부 하나로 여러 인스턴스가 함께 사용할 함수 프로퍼티를 생성할 수 있다. 예제 3-6은 생성자 함수 내부에서 함수 프로퍼티를 new 객체에 직접 정의하고 각 객체 인스턴스에 프로퍼티를 추가하는 코드다. 각 인스턴스는 자신만의 고유한 함수를 가진다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.