Class
개요
es6에서는 class가 추가 됐습니다. class를 선언하기 위해선 class 키워드를 사용해야 합니다.
constructor(생성자)
constructor
메소드는 class
로 생성된 객체를 생성하고 초기화하기 위한 특수한 메소드입니다. constructor
라는 메서드는 한개만 존재할 수 있습니다. 한개 이상 사용하면 SyntaxError
가 발생합니다.
constructor
는 부모 클래스의 constructor
를 호출하기 위해 super
키워드를 사용할 수 있습니다.
1 2 3 4 5 6 7
| class Human { constructor(height, width) { super() this.height = height; this.width = width; } }
|
Static methods
static
키워드는 클래스를 위한 정적(static) 메소드를 정의합니다. 정적 메소드는 클래스의 인스턴스화 없이 호출되며, 클래스의 인스턴스에서는 호출할 수 없습니다. 정적 메소드는 어플리케이션을 위한 유틸리티 함수를 생성하는데 주로 사용 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class Point { constructor(x, y) { this.x = x; this.y = y; }
static distance(a, b) { const dx = a.x - b.x; const dy = a.y - b.y;
return Math.sqrt(dx * dx + dy * dy); } }
const p1 = new Point(5, 5); const p2 = new Point(10, 10);
console.log(Point.distance(p1, p2));
|
extends를 통한 클래스 상속 (sub classing)
extends
키워드는 클래스 선언이나 클래스 표현식에서 다른 클래스의 자식 클래스를 생성하기 위해 사용 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class Animal { constructor(name) { this.name = name; }
speak() { console.log(this.name + ' makes a noise.'); } }
class Dog extends Animal { speak() { console.log(this.name + 'barks.'); } }
|
super
를 통한 상위 클래스 호출
super
키워드는 객체의 부모가 가지고 있는 함수들을 호출하기 위해 사용됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class Cat { constructor(name) { this.name = name || 'noname'; }
speak() { console.log(this.name + ' makes a noise.'); } }
class Lion extends Cat { constructor() { super(); }
speak() { super.speak(); console.log(this.name + ' roars.'); } }
const lion = new Lion();
|