inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

클래스와 상속에 대한 질문입니다.

해결된 질문

276

alice

작성한 질문수 55

0

첫번째 질문


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 이야!!!
뛰어서 도망가자!!

위의 코드를 아래 코드로 바꾸면서 부모 생성자로 값을 넘겨주는 방법을 알려주셨는데

터미널에 찍히는 결과는 똑같은데 왜 저렇게 부모 생성자로 값을 넘겨줘야 하는지 이유를 잘 모르겠습니다.

NestJS docker javascript rest-api nodejs tdd express

답변 1

1

angie

안녕하세요. Sophia님

  1. 매개변수에 기본값을 지정하는 방법을 학습해 보시길 바랍니다. 아래 링크를 참고해 보시길 바랍니다.
    https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Functions/Default_parameters

  2. 동일한 결과가 발생하는 이유는 생성자 함수가 생략 가능 하기 때문입니다. 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