<aside> 💡 자바스크립트는 클래스가 없음 자바스크립트는 프로토타입 기반의 언어임
</aside>
<aside> 💡 es6에 클래스가 추가되었지만 그것은 문법적인 설탕이었음
실제 동작은 프로토타입 기반으로 동작하지만 겉으로 보기에는 클래스로 동작하는 것처럼 작성하게 함 기존의 문법을 활용해서 편의성이나 기능을 더한 문법을 설탕 문법(syntactic sugar)라고 함
</aside>
function Shape(color) {
this.color = color;
this.getColor = function () {
return this.color;
};
}
const shape1 = new Shape("red");
console.log(shape1.color);
console.log(shape1.getColor());
function Retangle(color, width, height) {
this.color = color;
this.width = width;
this.height = height;
this.getColor = function () {
return this.color;
};
this.getArea = function () {
return this.width * this.height;
};
}
const rect1 = new Retangle("blue", 10, 10);
console.log(rect1);
Shape의 color와 getColor 속성을 상속받아서 쓰고 싶음
function Shape(color) {
this.color = color;
this.getColor = function () {
return this.color;
};
}
function Retangle(color, width, height) {
Shape.call(this, color); // 상속
this.width = width;
this.height = height;
this.getArea = function () {
return this.width * this.height;
};
}
const rect1 = new Retangle("blue", 10, 10);
console.log(rect1);
console.log(rect1.color);
class Shape {
constructor(color) {
this.color = color;
}
getColor() { // this 없이 선언 가능
return `이 도형의 색상은 ${this.color}입니다.`
}
}
const shape1 = new Shape("red"); // 인스턴스 생성
class Shape {
constructor(color) {
this.color = color;
}
getColor() {
return `이 도형의 색상은 ${this.color}입니다.`;
}
}
class Retangle extends Shape{ // 상속
constructor(color, width, height){
super(color);
this.width = width;
this.height = height;
}
getArea() {
return this.width * this.height;
}
}
const rect1 = new Retangle("blue", 10, 10);
console.log(rect1.getColor());
console.log(rect1.getArea());
더 직관적이고 깔끔하게 상속을 구현할 수 있음