본문 바로가기

자바스크립트 리뷰

배열속 객체에 대한 메소드 만들기 [혼공자 9-1-4]

배열(A) 속 객체 에 사용할 수 있는 메소드를 만들 수 있다. 이러면 장점이 그 메소드 이름과 똑같은 함수를 문서 어딘가에서 만들더라도 그대로 사용이 가능하다. 그 함수는 배열(A)속 객체에 대해서가 아니라 다른 상황에서 쓰일 수 있는 것이다.  

 

물론 배열(A) 속 객체에 대해서 만든 메소드는 그 객체에 대해서만 사용이 가능하다. 코드를 보자.

      // 객체를 선언합니다.
      const students = []
      students.push({ 이름: '구름', 국어: 87, 영어: 98, 수학: 88, 과학: 90})
      students.push({ 이름: '별이', 국어: 92, 영어: 98, 수학: 96, 과학: 88})
      students.push({ 이름: '겨울', 국어: 76, 영어: 96, 수학: 94, 과학: 86})
      students.push({ 이름: '바다', 국어: 98, 영어: 52, 수학: 98, 과학: 92})
    
      // students 배열 내부의 객체 모두에 메소드를 추가합니다.
      for (const student of students) {
        student.getSum = function () {
          return this.국어 + this.영어 + this.수학 + this.과학
        }

        student.getAverage = function () {
          return this.getSum() / 4
        }
      }  

      getAverage = function(a,b){
        return a + b
      }
      console.log(getAverage(2,5))  // 이렇게 똑같은 getAverage 이름으로 함수를 만들어도 위의 메소드와 충돌하지 않는다.
      // 위의 getAverage 와 getSum 메소드는 students 배열의 객체에만 적용되는 메소드이다.

      // 출력합니다.
      let output = '이름\t총점\t평균\n'
      for (const s of students) {
        output += `${s.이름}\t${s.getSum()}점\t${s.getAverage()}점\n`
      }
      console.log(output)