JS : Classes

?·2020년 9월 21일
0

What I've learned

목록 보기
6/21

나는 이미 CSS를 통해서 많은 class를 만나왔지만 이번에는 그것과는 전혀 다른, 연관 없는 새로운 Class에 대해서 배울 것이다.

Class는 객체지향 프로그램의 핵심이라고 할 수 있다. 그러면 객체 지향 프로그램이란 무엇이냐? 객체지향 프로그램이란, 프로그램을 객체들로 구성하고 객체들 간에 서로 상호작용하도록 작성하는 방법이다.

javascript는 객체지향 중심에 있는 언어는 아니지만, 프로그래밍에 있어서 class, 객체, 객체지향은 항상 중요한 주제이다.


여기서의 class는 쉽게 말하자면 객체 (object)를 잘 설계하기 위한 틀이라고 할 수 있다. class를 통해 원하는 구조의 객체 틀을 짜놓고, 비슷한 모양의 객체를 공장처럼 찍어낼 수 있게 된다.

객체의 설계도인 Class는 객체와 문법이 비슷하다. 둘의 가장 큰 차이는 constructor라는 생성자 함수이다.

class Car {
  constructor(name, price) {
    this.name = name;
    this.price = price;
    this.department = "선릉지점";
  }

  applyDiscount(discount) {  
    return this.price * discount;   
  }

  changeDepartment(departmentName) {
    this.department = departmentName;
  }
}

Class의 코드는 보통 위와 같다.

car는 class의 이름이고 이름은 항상 대문자로 시작한다. 코드 내부의 this는 class의 실행범위(context)에서 해당 instance를 의미한다.

const morning = new Car (Morning, 200000);

위의 코드는 Car라는 class를 통해서 객체를 생성하는 코드이다.
이처럼 class로 객체를 생성하는 과정을 ‘인스턴스화’라고 부르며
class를 통해 생성된 객체를 인스턴스라고 부른다.

인스턴스는 class 이름에 new를 붙여서 생성하며 class는 새로운 instance를 생성할 때마다 constructor 매서드를 호출한다.


마지막으로, class와 관련하여 기억해 두어야 할 점은

함수선언과 클래스 선언의 중요한 차이점은 함수선언의 경우 호이스팅이 일어나지만 클래스 선언은 그렇지 않다는 것이다.

클래스를 사용하기 위해서는 클래스를 먼저 선언해야 하며, 그렇지 않으면 다음 아래의 코드는 에러를 던질 것이다

profile
?

0개의 댓글