JS class 만들기
JavaScript 관련 글입니다.
- JS Event Loop, 자바스크립트 동작 원리
- 호이스팅이란 , var, let, const 차이
- Three.js에 대해
- script, script async, script defer의 차이
- AJAX가 무엇일까?
- 함수선언식과 함수표현식
- null과 undefined의 차이 간단정리
- setTimeout과 setInterval 요약
- this의 여러가지 의미
- Spread Operator(...)?
- JS class Constructor
- ES6 Destructuring Syntax
- default 파라미터 알아보기
- import / export 를 사용한 모듈식 개발방법
- Optional Chaining (?.)
- 프로미스(Promise)에 대해서
- ES8 - async / await
- Symbol 자료형?
- forEach, for in, for of 알아보기
- JSON형식 변환 방법 - JSON.parse(), JSON.stringify()
- 자바스크립트 가비지 컬렉션
- 화살표 함수와 일반함수의 차이
- JavaScript Array.reduce() 간단히 알아보기
이번 글에서는 class 키워드를 사용하여 클래스를 만드는 방법에 대해서 알아보겠습니다.
Class
class Animal {
constructor(type) {
this.type = type;
}
}
const dog1 = new Animal('dog');
console.log(dog1);
위의 예시는 간단하게 동물 클래스를 만든 것입니다. ‘class’를 붙여서 정의하는데, constructor를 사용하면 생성되는 Object의 기본값들을 초기화할 수 있습니다. Animal을 이용하여 dog1 오브젝트를 생성하였습니다.
또한 클래스안에 함수 역시 추가할 수 있습니다.
// 1번
class Person {
constructor(name) {
this.name = name;
this.sayHi = function() {
console.log('Hi');
}
}
}
const person = new Person('Kim');
// 2번
class Person {
constructor(name) {
this.name = name;
}
sayHi() {
console.log('Hi');
}
}
const person = new Person('Kim');
1번의 경우에는 constructor 내부에 함수를 추가했습니다. 이 경우는 함수를 직접적으로 자식이 값을 물려받습니다.
2번의 경우에는 constructor 밖에 함수를 추가했습니다. 이 경우는 함수가 Person의 prototype에 추가됩니다. (자식의 부모의 prototype에 추가)
상속
하나의 클래스를 상속하여 다른 클래스를 만들 수 있습니다. 바로 ‘extends’ 키워드를 사용하면 됩니다.
class Animal {
constructor(type) {
this.type = type;
}
}
class Pets extends Animal {
constructor(type, age) {
super(type); // Animal의 constructor안의 값들을 그대로 가져온다고 보면된다.
this.age = age;
}
}
const choco = new Pets('dog', 2);
console.log(choco);
Animal 클래스를 상속하여 Pets 라는 클래스를 만들고 choco라는 오브젝트를 만든 것입니다.
위처럼 ‘extends’ 다음에 상속하고 싶은 대상을 쓰면 됩니다.
그리고 Pets의 constructor안에 super()를 써줘야 Animal의 constructor안의 값들을 그대로 가져옵니다.
super안의 파라미터는 부모의 constructor에 들어가는 파라미터랑 동일한 값이 들어갑니다.
End.