[상속과 다향성]
도형에서 삼각형, 사각형, 오각형이 존재하면 이들의 높이와 너비를 측정할 수 있다.
높이와 너비, 길이를 각 도형마다 각각 선언되어 독립적으로 계산되어 사용되면 가용성과 유지보수성이 떨어진다.
그렇기 떄문에 하나의 class에서 공통적으로 사용되어 각 도형마다 측정기능을 '포함하여' 쓰면 된다.
class Shape { // 도형 측정 class
constructor (width, height, color) {
this.width = width;
this.height = height;
this.color = color;
}
draw() {
console.log(`drawing ${this.color} color of`);
}
getArea() {
return this.width * this.height;
}
}
class Rectangle extends Shape { // 사각형 class / Shape class 상속
}
const rectangle = new Rectangle(20, 20, 'blue');
rectangle.draw(); // drawing blue color of
console.log(rectangle.getArea()); // 400
Class checking instanceOf
instanceof 연산자는 object의 프로토타입 체인에 constructor.prototype이 존재하는지 판별합니다. (new 선언을 통한 인스턴스 할당 여부 확인)
class Rectangle extends Shape {} // 사각형 class / Shape class 상속
class Triangle extends Shape {} // 삼각형 class / Shape class 상속
const rectangle = new Rectangle(20, 20, 'blue');
const triangle = new Triangle(20, 20, 'red');
console.log(rectangle instanceof Rectangle); // true
console.log(triangle instanceof Rectangle); // false
console.log(triangle instanceof Triangle); // true
console.log(triangle instanceof Shape); // true
console.log(triangle instanceof Object); // true