자바스크립트에서 클래스는 함수의 한 종류이다.
class ExClass{
constructor (name) {
this.name = name;
}
method {
}
method2 {
}
…
}
객체기본상태를 설정해주는 생성자메소드 constructor는 class를 new로 호출시 자동으로 호출되어 객체 상태를 초기화 해줍니다. (클래스필드를 초기화)
클래스내 constructor는 한개만 존재가능하고,
constructor를 설정해주지 않으면 자동으로 비워진채로 함수가 생성됩니다.
class로 만든 함수는 내부에 특수 프로퍼티 [FunctionKind]]:"classConstructor" 가 있어서 반드시 호출시엔 new와 함께 호출해야 됩니다. (아니면 error발생)
class field란
클래스 내부에 캡슐화 된 변수를 의미한다.
클래스 내부에서 일반 변수 설정하듯이
class exClass {
name = “exName”
}
위와 같이 class 안에서 할당연산자(=)를 사용하여 인스턴스 속성을 지정할 수 있는문법을 말한다.
(개별 객체에만 클래스필드가 설정된다. exClass.prototype이 아닌)
getter와 setter는 메서드 앞에 get, set을 각각 붙혀서 클래스필드값을 조작할 때사용할 수 있다.
getter는 메서드로 부터 정보를 받아올때, 그리고 반드시 반환한다.
setter는 정보를 수정할 때 사용한다.
클래스를 다른 클래스로 확장하는 방법으로 사용됩니다.
class Animal {
constructor(name) {
this.name = name;
this.speed = 0;
}
run(velocity) {
this.speed = velocity;
}
stop() {
this.speed = 0;
}
}
class Turtle extends Animal {
hide() {
alert(`${this.name}이 숨었습니다`);
}
}
let ninja = new Turtle(“닌자거북”);
이렇게 하면 ninja는 Turtle 클래스에 정의된 hide메소드에 접근할 수 있을 뿐만 아니라, Animal클래스에 정의된 run과 stop 메소드에도 접근할수 있습니다.
Javascript Info 참조
위와 같은 관계를 가지고 있다.