🔍 class
자바스크립트의 class는 ECMA6에서 새로 도입된 개념이다.
class로 강아지를 만들어보자
class Dog {
constructor() { // 생성자(속성)
this.type = 'Retriever';
this.name = 'Olsa';
this.color = 'black';
this.eat = 'feed';
}
}
Dog라는 클래스를 만들었다.
클래스 함수 이름의 첫 시작은 대문자, 일반 함수는 소문자로 시작하는 것을 알아두자
`constructor`는 생성자라고 한다.
생성자는 객체를 생성하고 이 생성자가 존재해 class가 호출된다.
또한 `class`안에서 생성자는 단 하나여야 한다.
this는 `Dog`를 뜻한다.
this대신 Dog를 사용한다면 컴퓨터는 Dog를 찾으려 노력한다. this를 사용해 시간과 메모리 사용을 단축할 수 있다.
class Dog {
constructor() { // 생성자(속성)
this.type = "Retriever";
this.name = "Olsa";
this.age = 2;
this.color = "black";
this.eat = "feed";
}
eat(){
return "Yami!"; // eat 메서드를 실행할 때 "Yami!"가 출력된다.
}
}
`eat()` 은 메서드라고 한다.
메서드란 객체 안에 프로퍼티로 정의된 함수를 말한다.
(프로퍼티 : 객체 안에 선언된 이름과 값으로 이루어진 한 쌍)
🔍 class의 장점
class는 함수 선언과 달리 호이스팅이 일어나지 않는다.
호이스팅은 함수 선언 유무와 상관없이 선언 전에도 함수 사용이 가능한 것인데
함수 호출 이후 선언하는 경우 호이스팅이 일어나면 실행이되지만
그렇지 않으면 선언되지 않은 함수라는 에러가 나타난다.
이러한 호이스팅의 단점을 class는 해결이 가능하다.
class는 자동으로 strict모드(엄격 모드)를 적용시킨다.
strict모드로 더 꼼꼼한 코딩이 가능해진다.