JS는 프로토타입 기반 프로그래밍 언어로써, 클래스가 필요 없는 객체지향 프로그래밍 스타일로 프로토타입 체인과 클로저 등으로 객체 지향 언어의 상속, 캡슐화 등의 개념을 구현할 수 있다.
ES5에서는 생성자함수, IIFE, 프로토타입, 클로저를 이용해 객체 지향 프로그래밍을 구현했다.
하지만 클래스 기반 언어에 익숙한 프로그래머들은 기존 방식과 다른 JS의 이러한 방식이 혼란스러울 수 있으며, 어렵게 느낄 수 있었다.
ES6 부터 도입된 클래스는 기존 프로토타입 패턴의 문법적 설탕으로써, 하나의 함수로써 동작한다.
ES6 부터 도입된 클래스는 class 키워드를 사용하며, 파스칼 케이스를 사용하여 정의 한다.