더북(TheBook)

콘솔에 monster1을 입력해 보면 생성자 함수로 생성한 몬스터 객체 내부에 [[Prototype]]이라는 속성이 있고, 그 안에 attack() 메서드가 들어 있는 것을 확인할 수 있습니다. 또한, 객체 앞에 Monster라고 붙어 있는데, 생성자 함수로 생성한 객체는 앞에 생성자 함수의 이름이 붙습니다. 콘솔에서 객체 앞에 이름이 붙어 있으면 해당 생성자로 만들었다고 생각하면 됩니다.

그림 2-37 prototype 속성에 들어 있는 attack( ) 메서드

공장 함수와 생성자 함수에서는 메서드를 선언하는 부분이 분리되어 있습니다. 공장 함수에서는 attack() 메서드가 createMonster() 함수 바깥에 있고, 생성자 함수에서는 Monster() 함수 바깥에 prototype 코드가 있습니다. 이렇게 속성과 메서드가 분리되어 있으면 관리하기가 까다롭습니다. 분리되어 있는 속성과 메서드는 클래스를 사용해 한데로 모을 수 있습니다. 클래스는 2.7.3절에서 배우고 앞에서 언급한 this부터 살펴보겠습니다.

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