클래스와 상속에 대한 질문입니다.
첫번째 질문
class Monster {
power = 10;
constructor(aaa) {
this.power = aaa;
}
attack = () => {
console.log("공격하자!!");
console.log(`내 공격력은 ${this.power} 이야`);
};
run = () => {
console.log("도망가자!!");
};
}
const mymonster1 = new Monster(20);
mymonster1.attack();
mymonster1.run();
const mymonster2 = new Monster();
mymonster2.attack();
mymonster2.run();//터미널
공격하자!!
내 공격력은 20 이야
도망가자!!
공격하자!!
내 공격력은 undefined 이야
도망가자!!위와 같이 new Monster 하면서 생성자에 power 값을 넘겨주지 않으면 undefined 이 찍히는데,
저렇게 생성자가 있는 상황에서, 기본적으로 class 안에서 설정해 준 power 값 power = 10;을 이용하려면 어떻게 해야 하나요?
두번째 질문
class Monster {
power = 10;
constructor(aaa) {
this.power = aaa;
}
attack = () => {
console.log("공격하자!!");
console.log("내 공격력은 " + this.power + " 이야!!!");
};
}
class SkyMonster extends Monster {
run = () => {
console.log("날라서 도망가자!!");
};
}
class GroundMonster extends Monster {
run = () => {
console.log("뛰어서 도망가자!!");
};
}
const skymonster = new SkyMonster(10);
skymonster.attack();
skymonster.run();
const groundmonster = new GroundMonster(30);
groundmonster.attack();
groundmonster.run();
class Monster {
power = 10;
constructor(aaa) {
this.power = aaa;
}
attack = () => {
console.log("공격하자!!");
console.log("내 공격력은 " + this.power + " 이야!!!");
};
}
class SkyMonster extends Monster {
constructor(qqq) {
super(qqq);
}
run = () => {
console.log("날라서 도망가자!!");
};
}
class GroundMonster extends Monster {
constructor(www) {
super(www);
}
run = () => {
console.log("뛰어서 도망가자!!");
};
}
const skymonster = new SkyMonster(10);
skymonster.attack();
skymonster.run();
const groundmonster = new GroundMonster(30);
groundmonster.attack();
groundmonster.run();
//터미널
공격하자!!
내 공격력은 10 이야!!!
날라서 도망가자!!
공격하자!!
내 공격력은 30 이야!!!
뛰어서 도망가자!!위의 코드를 아래 코드로 바꾸면서 부모 생성자로 값을 넘겨주는 방법을 알려주셨는데
터미널에 찍히는 결과는 똑같은데 왜 저렇게 부모 생성자로 값을 넘겨줘야 하는지 이유를 잘 모르겠습니다.
답변 1
1
안녕하세요. Sophia님
매개변수에 기본값을 지정하는 방법을 학습해 보시길 바랍니다. 아래 링크를 참고해 보시길 바랍니다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Functions/Default_parameters동일한 결과가 발생하는 이유는 생성자 함수가 생략 가능 하기 때문입니다. constructor에 대해 학습해 보세요.
또한 부모 클래스에서 상속된 자식 클래스에서 새로운 속성을 정의하기 위해 super 키워드를 사용합니다. 이 때, 부모 클래스를 호출하지 않게 되면 this에 대한 참조 에러가 발생하기 때문입니다.
자바스크립트 Class에 대해 학습해 보시길 바랍니다.
https://poiemaweb.com/es6-class
감사합니다.
그래프 ql 문서 사용할때 느낌표 남는거 어떻게 없애나요?
0
86
2
강의 전체 소스 코드를 받고싶습니다.
0
77
2
fontawesome 사용 문의
0
81
2
소스 코드 부탁드립니다~
0
87
2
깃 레포지터리 소스
0
87
2
커리큘럼12.css 정렬 에 나오는 과제 정답알고싶어요
0
74
2
10-01 Entity TypeOrmModule.forRoot 에 entities
0
89
3
강의 버전관련 문의입니다
0
104
2
Ubuntu 설치 관련
0
62
1
schema.gql 질문 드립니다.
0
51
1
서버 재실행시 Many to Many
0
102
3
input 관련 문의
0
90
2
Rest API 보다는 graphql이 주된 내용인데
0
134
2
강의 전체 소스코드 받을수있을까요?
0
156
1
도커볼륨 마운트 관련
0
127
2
findOne 타입스크립트오류
0
109
1
http => htrtps 호출 인증서 신뢰 오류
0
356
1
self-signed certificate in certificate chain 에러 발생
0
421
1
mongoose 설치 오류
0
143
1
특정 API, 특정 IP 허용 (단일경로에 CORS 활성화)
0
286
2
08-06
0
180
3
구조랑 패턴 관련해서 질문
0
126
2
mydocker
0
129
2
coolsms statuscode 2000 인데 전송안돼는 경우 확인.
0
156
1





