이번에는 class를 활용해 모듈화 하는 이유에 대해 알아보려고 한다.
그렇다면 우선 class가 무엇인지부터 알고 가야한다.
Class는 객체지향 프로그래밍에서 객체를 생성하기 위한 일종의 설계도이다. 검색을 해봤을 때 다들 붕어빵과 붕어빵틀을 비유로 드는데 여기서 붕어빵은 객체, 붕어빵틀은 클래스로 비유로 든다.
이유로는 클래스는 객체를 생성하기 위한 템플릿이다. Class를 통해 원하는 구조의 객체 틀을 짜놓고 비슷한 모양의 객체를 계속 찍어낼 수 있기에 붕어빵과 붕어빵 틀을 예시로 드는 사람들이 많다.
이는 객체지향 프로그래밍과 깊은 연관성을 가지고 있으므로 객체지향 프로그래밍에 대해서는 다음에 한번 정리해서 글을 써보겠다.
자바스크립트는 프로토타입 기반 객체지향 언어이다. 이는 클래스가 필요 없는 언어이다.
ES5까지는 해도 생성자 함수와 프로토타입을 통해 상속을 사용했지만 ES6에 도입된 클래스 더북에 훨씬 간편하게 구현할 수 있게 되었다.
// 생성자 함수 (ES5)
var Person = (function() {
function Person(name) {
this.name = name;
}
Person.prototype.sayHi = function () {
console.log('Hi, ' + this.name)
}
}());
var me = new Person('Kang')
me.sayHi() // Hi, Kang
// 클래스 (ES6)
class Person {
constructor(name) {
this.name = name;
}
sayHi() {
console.log('Hi, ' + this.name)
}
}
const me = new Person('Kang')
me.sayHi() // Hi, Kang
클래스는 일급 객체이며, 다음 특징을 갖는다.
🎈 일급 객체란* (First-class object)
함수의 매개변수로 전달되거나, 함수의 결과로 반환되거나, 변수에 할당될 수 있는 모든 객체를 가리킨다.
모듈이란 재사용할 수 있는 단위로 나눈 코드들의 묶음이다.
Class는 객체를 생성하기 위한 일종의 템플릿으로, 객체의 속성과 메서드를 정의하는데 사용된다. 이를 활용하여 Class에 해당하는 기능들을 만들고 조합해 모듈화를 할 수 있다.
Class를 사용해 모듈화를 사용하면 좋은 점은 코드들이 구조화 되고, 그로 인해 재사용성이 높아진다. 또 각각의 기준에 따라 구분해놓아 가독성과 유지보수가 좋아진다.