책에서는 es5에 초점을 맞추고 클래스의 여러 기능들을 흉내내보는 형식으로 소개를 했다. 책의 내용은 클레스에 대해서 어느정도 알고 있어야 맥략을 파악하기 쉬울 것 같다는 생각이 들었다.
클래스는 객체를 반복적으로 만들어 내기 위해 사용되는 일종의 틀(템플릿)과 같은 장치이다.
클래스(class, 어원: classification)는 객체 지향 프로그래밍(OOP)에서 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀(template)이다. 객체를 정의하기 위한 메소드와 변수로 구성된다.[1][2]
템플릿을 사용하면 객체를 분류할 때 멤버의 자료형을 미리 정하지 않고 객체를 사용할 때 결정할 수 있다. 이를 통해 클래스나 변수의 중복 정의를 하지 않아도 되므로 효율적으로 코딩이 가능하다.
객체는 클래스로 규정된 인스턴스로서, 변수 대신 실제값을 가진다.
클래스는 OOP를 정의하는 개념 중 하나인데, 클래스에 대한 중요한 몇가지의 개념들은 다음과 같다.
클래스는 전부 혹은 일부를 그 클래스 특성으로부터 상속받는 서브클래스를 가질 수 있으며, 클래스는 각 서브클래스에 대해 수퍼클래스가 된다.
서브클래스는 자신만의 메소드와 변수를 정의할 수도 있다.
이러한 클래스와 그 서브클래스 간의 구조를 "클래스 계층(hierarchy)"이라 한다.
class User {
// 필드
name="";
// 생성자
constructor(name) {
this.name = name;
}
// 메서드
sayHi() {
console.log("Hi my name is " + this.name);
}
}
// 사용법:
let user = new User("John");
console.log(user.name); //John
user.sayHi(); // "Hi my name is John
클래스는 꼭 new 연산자와 함께 사용되어야 한다. [[IsClassConstructor]]: true 필드가 존재하여, 만약 new와 함께 사용되지 않는다면 에러를 발생시킨다