MDN에서는 Class를 다음처럼 정의하고 있다.
"Classes are a template for creating objects. They encapsulate data with code to work on that data."
클래스는 객체를 만들기 위한 템플릿이다. 데이터와 데이터를 변형시키는 코드를 encapsulate하는 형태로 담고있다.
어떤 오브젝트가 되기 위해서는 몇 가지의 조건들이 필요하다. 그 조건들이 오브젝트를 생성하는 청사진이 되는 것이다.
과일을 만드는 청사진을 예시로 들어 클래스를 만들어 보겠다.
클래스는 함수로 생성할 수 있으며 이를 "생성자 함수"라고 한다.
ES5과 ES6는 생성자 함수를 만드는 방법이 좀 다른데 둘 다 예시를 들어보겠다.
여기서 생성자 함수의 이름의 첫 알파벳은 대문자로 해주는 것이 보통의 관례이다.
//ES5
function Fruit(color, taste, shape) {
this.color = color;
this.taste = taste;
this.shpae = shape;
}
//ES6
class Fruit {
constructor(color, taste, shape) {
this.color = color;
this.taste = taste;
this.shape = shape;
}
}
클래스라는 청사진을 가지고 과일 오브젝트를 만들어보자. 오브젝트에 다양한 속성을 부여해 다른 종류의 과일을 만들 수 있다.
이렇게 클래스를 바탕으로 한 오브젝트를 "인스턴스" 라고 한다.
여기서 new라는 키워드를 사용해 변수에 클래스를 바탕으로 만들어진 객체를 할당한다. 그러면 인스턴스가 생성된다.
const lemon = new Fruit(yellow, sour, oval);
const orange = new Fruit(orange, sweet, round);