아래 내용을 잘 읽으면 알 수 있다.
super() 문법은 상위 클래스를 참조할 수 있게 하는 것이다.
여기서 this에 대한 궁금증도 생길 수 있는데,
this는 작성하는 동안 구조의 맥락에 맞추어져서 상위 개체나, 생성자, 소속된 것에 대해 인스턴스화하는 구문이다.
this를 통해 instance화 하고, 클래스의 구조를 엮어서 사용하는 것이다. (완전 정확하지는 않을 것 같다. javascript는 prototype언어이기 때문에 좀 더 정확히 알아볼 필요가 있다. 현재 나의 이해가 여기까지 닿을 뿐이다.)
class Polygon {
constructor(height, width) {
this.name = 'Polygon';
this.height = height;
this.width = width;
}
sayName() {
console.log('Hi, I am a ', this.name + '.');
}
}
class Square extends Polygon {
constructor(length) {
this.height; // 참조오류가 발생합니다. super가 먼저 호출되어야 합니다.
// 여기서, 부모클래스의 생성자함수를 호출하여 높이값을 넘겨줍니다.
// Polygon의 길이와 높이를 넘겨줍니다.
super(length, length);
// 참고: 파생 클래스에서 super() 함수가 먼저 호출되어야
// 'this' 키워드를 사용할 수 있습니다. 그렇지 않을 경우 참조오류가 발생합니다.
this.name = 'Square';
}
get area() {
return this.height * this.width;
}
set area(value) {
this.area = value;
}
}
'Javascript > Basic' 카테고리의 다른 글
[Basic] 깊은 복사, 얕은 복사 shallow copy, deep copy, slice, JSON.parse, JSON.stringify (0) | 2021.05.20 |
---|---|
[javascript] reference 사이트 (0) | 2021.04.09 |
[javascript] 프로토타입으로 생긴 특징들.. (prototype based programming) (0) | 2021.04.09 |
[Dev] CallBack 콜백함수 (0) | 2021.03.29 |
[JavaScript] 검색 기능 만들기 [펌] (2) | 2021.02.10 |
[javascript] import 에 대한 이해 (0) | 2021.02.08 |
[javascript] typeof, instanceof 설명 (0) | 2021.01.26 |
댓글