더북(TheBook)

업무 요건상, 하나 또는 둘 이상의 attendee 객체에 대해 checkIn 함수를 실행해야 한다.

나중에 참가자 컬렉션(집단)을 처리하는 방식이 바뀔지 모르니 attendee 객체 컬렉션을 캡슐화한 attendeeCollection 객체를 두는 것이 타당해 보인다.

참가자를 각각 체크인하려면 attendeeCollection 객체는 참가자 개인별로 어떤 액션을 수행할 수 있는 구조여야 한다. 승현은 바로 이 액션을 콜백 함수에 넣어 실행하고 싶다.

먼저 contains, add, remove 함수가 필수인 attendeeCollection을 정의한다(예제 5-1). 지금 아무 코드도 없는 iterate가 승현이 집중하여 개발할 함수다.

예제 5-1 Conference.attendeeCollection 모듈의 초기 구현부

var Conference = Conference | | {};
Conference.attendeeCollection = function() {
var attendees = [];
 
return {
  contains: function(attendee) {
    return attendees.indexOf(attendee) > -1;
  },
  add: function(attendee) {
    if (!this.contains(attendee)) {
      attendees.push(attendee);
    }
  },
  remove: function(attendee) {
    var index = attendees.indexOf(attendee);
    if (index > -1) {
      attendees.splice(index, 1);
    }
  },
 
  iterate: function(callback) {
    // attendees의 각 attendee에 대해 콜백을 실행한다.
  }
};
};

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