자바스크립트 리뷰

함수로 객체 찍어내기(판화 찍어내듯이) [혼공자 9-1-5]

가문비7 2023. 4. 5. 23:00

함수로 객체를 찍어내고 고 객체들마다 메소드를 만들어 둘 수도 있다.

그러면 장점이 많다.

  1) 객체들의 키와 값을 하나하나 입력할 때보다 코드를 더 적게 칠 수 있다. 파라미터만 입력하면 키와 값이 자동입력되니까.

  2) 코드를 적게 치니 오탈자가 줄어든다.

  3) 객체의 속성과 메소드를 한 함수 내에서 관리하므로 객체 관리(유지보수)가 쉬워진다.

 

무튼 그렇게 만든 코드를 보자.

      function createStudent(이름, 국어, 영어, 수학, 과학) {
        return {
          // 속성을 선언합니다. 값은 파라미터로 이미 입력되었음.
          이름: 이름,
          국어: 국어,
          영어: 영어,
          수학: 수학,
          과학: 과학,
          // 메소드를 선언합니다.
          getSum () {
            return this.국어 + this.영어 + this.수학 + this.과학
          },
          getAverage () {
            return this.getSum() / 4
          },
          toString() {
            return `${this.이름}\t${this.getSum()}점\t${this.getAverage()}점\n`
          }
        }
      }

      // 객체를 선언합니다.
      const students = []
      students.push(createStudent('구름', 87, 98, 88, 90))  // 객체에 요소 & 요소에 대한 메소드를 넣어준다.
      students.push(createStudent('별이', 92, 98, 96, 88))
      students.push(createStudent('겨울', 76, 96, 94, 86))
      students.push(createStudent('바다', 98, 52, 98, 92))
      console.log(students)


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

함수에다가 파라미터만 입력하면 객체가 더 쉽게 생성된다. 이름, 국어, 수학과 같은 키값을 계속 치지 않아도 된다. 마치 판화로 찍어내듯이 객체들을 함수라는 형틀로 찍어내게 된다.