모듈화

Reina·2024년 1월 11일
0
post-thumbnail

JavaScript의 Class를 설명할 때 가장 많이 사용하는 예시로는 붕어빵 틀을 얘기한다. 붕어빵 틀(클래스)에 반죽과 소를 넣어 만든 붕어빵(인스턴스)처럼 우리는 클래스를 활용해 JavaScript의 객체나 메소드를 모듈화 해서 사용할 수 있다.



모듈화?

붕어빵을 만들 때 필요한 것은 바로 틀(클래스), 반죽과 소(프로퍼티), 그리고 만드는 방법(메소드)이다. 이 모든 게 준비되면 우리는 반죽과 소(프로퍼티)만 입맛에 맞게 넣어 만들면 된다. 이를 우리는 class를 활용해서 붕어빵을 만드는 방법을 모듈화 했다고 할 수 있다.

class Bungeoppang {
	constructor(dough, ingredient) {
        this.dough = dough;
        this.ingredient = ingredient;
	}	
  
    makeBungeo() {
      	console.log(`붕어빵 틀에 ${this.dough}을 붓고, ${this.ingredient}을 넣어 적당히 굽는다.`);
    }
}

const 팥붕 = new Bungeoppang('반죽', '팥');
팥붕.makeBungeo();

const 슈붕 = new Bungeoppang('반죽', '슈크림');
슈붕.makeBungeo();

console.log('맛있는 붕어빵들이 완성되었다!');
/* 붕어빵 틀에 반죽을 붓고, 팥을 넣어 적당히 굽는다.
  붕어빵 틀에 반죽을 붓고, 슈크림을 넣어 적당히 굽는다.
  맛있는 붕어빵들이 완성되었다! */

class 내부의 constructor 를 활용해 class를 생성할 때 필요한 값을 바로 전달해줄 수 있다. constructor(param1, param2, ...) { ... } 를 작성하고, 인스턴스* 시 new Bungeoppang(arg1, arg2, ...) 로 작성하면 된다.

인스턴스 시 인수로 입력한 값이 constructor 로 전달되고, class의 프로퍼티(속성) 로 인지해 클래스 내의 메소드에서 이 값을 활용할 수 있다. 이로 인해 makeBungeo() 메소드에서 this.doughthis.ingredient 도 활용해 값을 출력할 수 있게 된다.

*인스턴스: 클래스를 객체화 하는 행위 (붕어빵 틀을 활용해 실제 붕어를 만듦)


constructor를 사용하지 않은 예시도 한 번 봐보도록 하자.

class Calculator {
    add(a, b) { return a + b; }
    subtract(a, b) { return a - b; }
    multiply(a, b) { return a * b; }
    divide(a, b) { return a / b; }
}

const calculator = new Calculator();
console.log(calculator.add(4, 2));       // 6
console.log(calculator.subtract(4, 2));  // 2
console.log(calculator.multiply(4, 2));  // 8
console.log(calculator.divide(4, 2));    // 2

이처럼 인스턴스 시 프로퍼티를 따로 전달하지 않고, 클래스 내의 메소드를 사용할 때 바로 인수를 전달해서 메소드를 이용할 수도 있다.


마지막으로 class 이름은 다른 변수와 구분하기 위해 대문자 로 시작해주면 된다는 점까지 알아가면 된다.



붕어빵을 많이 먹는 편은 아니지만 블로그를 작성하면서 먹고 싶어졌다... ໒꒰ྀི◜⤙◝ ꒱ྀི১ 🫘🫘

profile
호기심 많은 프론트엔드 개발자

0개의 댓글