es6 문법인 class는 객체 생성자(생성자 함수)와 prototype을 조금 더 쉽게 사용하는 문법이다.
class를 생성하고 객체로 만들어 보겠다.
class Animal { // constructor는 객체 생성자 함수와 비슷한 객체를 생성하는 생성자 메서드이다. // 어려운 말로 인스턴스를 생성 한다고 한다. constructor(type, name, sound) { this.type = type; this.name = name; this.sound = sound; } say() { console.log(this.sound); } }
// 생성자 함수의 경우에서는 prototype을 이용해서 상속을 했지만, // 클래스에서의 상속은 extends 키워드를 사용 한다. class Dog extends Animal { constructor(name, sound) { // super키워드는 자신이(Dog) 상속 받은 class의(Animal) constructor를 호출 한다. super('개', name, sound); } } class Cat extends Animal { constructor(name, sound) { super('고양이', name, sound); } }
결과는..
const dog = new Dog('멍멍이', '멍멍'); const cat = new Cat('야옹이', '야옹'); const cat2 = new Cat('야옹이2', '야옹2'); const cat3 = new Cat('야옹이3', '야옹3'); dog.say(); //멍멍 cat.say(); //야옹 cat2.say(); //야옹2 cat3.say(); //야옹3
class Dog, Cat 에서 사용하는 constructor 안에 사용 하는 super() 함수가 상속 받은 class Animal의 constructor를 가르킨다.