개발을하다가 Class에 Constructor가 함수 처럼 밖에서 사용할 때 매개변수처럼 느껴져서 이게 맞는건지 확실히 체감을 못하여 정리를 하게 됐다.
class Animal {
// run, stop Method는 호출에 앞서서, name 객체를 생성하면서 초기화를 한다.
constructor(name) {
this.speed = 0;
this.name = name;
}
run(speed) {
this.speed = speed;
alert(`${this.name} 은/는 속도 ${this.speed}로 달린다.`);
}
stop() {
this.speed = 0;
alert(`${this.name} 이/가 멈췄습니다.`);
}
}
const animal = new Animal('사자');
constructor
는 Class 안에서 아니면 다른 다른 Class에 상속한 경우에는 해당 Class 내부에서 사용하기 위한 객체를 정의하는 것이라고 볼 수 있다.
Class 내부에 다양한 함수가 존재하면 constructor
로 생성과 초기화된 객체는 this.변수
의 형태로 어느 함수의 내부라도 접근할 수 있다.
개발하다 기존에 있던 Class에 일부 기능만 변경하거나 새롭게 추가하고 싶을 경우에 새로 생성한 Class는 부모 Class의 상속을 받는데, 이 경우에는 super();
Method를 통해서 부모 Class의 생성자를 호출 해야한다.
class Animal {
constructor(name) {
this.speed = 0;
this.name = name;
}
...
}
class Rabbit extends Animal {
constructor(name, earLength) {
super(name);
this.earLength = earLength;
}
...
}
const rabbit = new Rabbit('산토끼', 15);
console.log(rabbit.name); // 산토끼
console.log(rabbit.earLength); // 15