더북(TheBook)

3.2 객체 리터럴

 

다음은 객체 리터럴(object literal)이다. 다음과 같이 선언한 객체를 말한다.


{ name: 'Koko', genus: 'gorilla', genius: 'sign language' }

객체 리터럴은 두 가지 생성 방법이 있다. 분명히 구분해야 한다. 먼저, 단순 객체 리터럴(bare object literal)이다.


var koko = { name: 'Koko', genus: 'gorilla', genius: 'sign language' };

이번에는 객체 리터럴이 함수 반환값인 경우다.


var amazeTheWorld = function() {
// . . .
return { name: 'Koko', genus: 'gorilla', genius: 'sign language' };
}

var koko = amazeTheWorld();

둘 중 하나가 다른 하나보다 더 DRY하다. 중요한 내용이니 차이점을 명확히 이해하자. 같은 프로퍼티를 지닌 객체 리터럴을 여럿 생성할 때 계속 반복되는 프로퍼티명을 입력하다 보면 실수하기 마련이다. 사실 TDD 방식으로 어떤 함수가 원하는 프로퍼티를 지닌 객체를 반환하는지는 충분히 확인할 수 있다. 하지만 단순 객체 리터럴만으로는 직접 테스트할 방법이 마땅치 않다.

객체 리터럴은 함수 프로퍼티를 가질 수 있는데, 후자처럼 함수에서 반환하는 식의 통제 가능한 방향으로 객체 리터럴을 생성하지 않으면 그 안에 포함된 함수 역시 테스트할 도리가 없다.

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