JAVA를 공부할 때만 class와 상속에 대해서 알고 있었는데
javascript 로도 class를 이용해서 좀 더 함수들을 간단하게 정리할 수 있어서 놀랐다.
좀 더 확실하게 실습해보기 위해 내가 관심이 많은 분야인 롤을 이용해 코드를 만들어보았다.
class LeagueOfLegend { // 모든 요소들이 가지고 있을 만한 속성이나 행동(메서드)들을
// 정의해서 상속시켜주는 부모 클래스입니다.
constructor(type = 'leagueOfLegend') {
this.type = type;
}
static isUnit(unit) {
return unit instanceof LeagueOfLegend;
}
moving_by_X() {
console.log('x축으로 움직인다.');
}
skill_q() {
console.log('q스킬을 사용한다.');
}
}
class Ad_Chanpion extends LeagueOfLegend { // 자식 클래스이고 범위가 부모보다 좁습니다.
constructor(type, firstName, lastName, position) {
super(type);
this.firstName = firstName;
this.lastName = lastName;
this.position = position;
}
sayName() {
console.log(`내 이름은 ${this.firstName} ${this.lastName}`);
super.skill_q();
super.moving_by_X();
}
}
// 생성자를 호출해줍니다.
const twistedfate = new Ad_Chanpion('마법사', '트위스티드', '페이트', '미드캐리');
// 만들어둔 객체를 이용해서 메서드를 호출합니다.
twistedfate.sayName();
결과는 아래와 같이 나온다.
호출은 맨 밑의 twistedfate.sayName(); 에서 한번 해주었고
sayName()에서는 자신이 호출되었을 때 자신의 이름을 console.log()를 해준 후에
상속해준 상위 단계 클래스의 skill_q 메서드와 moving_by_x를 사용한 모습이다.
여기에서 주의 깊게 봐야할 것은
1. this가 누구를 지칭하는지
2. Super로 누가 실행되는지
등이 있고, 처음에 이쪽을 연습할 때 가장 많이하는 실수 중에 하나가(제가 많이 했던 실수를 말하는겁니다.)
1) 호출을 하지 않거나
2) 호출을 했다고 생각했지만 뒤에 "()" 를 붙이지 않아서 메서드가 실행이 되지 않는 경우가 있다.
'코딩이야기 > JavaScript' 카테고리의 다른 글
[Javascript] js를 이용하여 html 만으로 include 하는 법 (0) | 2023.02.03 |
---|---|
[JavaScript] 카카오톡봇 가지고 놀면서 공부한 사실(3편) 구글 날씨 가져오기, 날씨 알림봇 (0) | 2023.02.02 |
[let, const] const에 객체를 담았을 때 (0) | 2023.01.20 |
[JavaScript] 주어진 수 n 이하의 모든 짝수의 합을 구하는 여러가지 방법 (0) | 2022.11.11 |
[JavaScript] 카카오톡봇 가지고 놀면서 공부한 사실(2편) / 중복수 처리, 로또 번호 생성기 로직 (0) | 2022.10.30 |