커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
5주차 강의 get, set 조건 질문
JavaScript 문법 종합반 v0
5주차
북마크
이*원
댓글
7
추천
0
조회수
19
조회수
19
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


get으로 width와 height값을 지정해주고 set에서 조건을 걸어준 후 실행을 해봤는데 오류가 발생합니다.

출력하는 부분에서 숫자타입을 쓰지 않을 경우 1번 에러가 발생하고, 음수값을 넣었을 경우 2번 값이 출력됩니다.


[1]

ReferenceError: d is not defined


[2]

넓이는 -1 입니다.



코드는 튜터님의 예제를 따라가면서 작성하였는데, set부분의 조건 부분이 잘못된 건가요?





작성한 코드 및 에러 메세지

class Rectangle {

 constructor(width, height) {

  // getters와 settets를 쓸 때는 this에 접근하는 프로퍼티의 이름 앞에 _를 붙여야 한다!!!!

  // _(underscore) : private(은밀하고, 감춰야 할 때)

  this._width = width;

  this._height = height;

 }

 //width를 위한 getter

 get width() {

  return this._width;

 }

 //width를 위한 setter

 set width(value) {

  // 검증 1. value가 음수이면 오류!

  if (value <= 0) {

   console.log("[오류]가로길이는 0보다 커야 합니다.");

   return;

  } else if (typeof value !== "number") {

   console.log("[오류] 가로길이로 입력된 값이 숫자타입이 아닙니다.");

   return;

  }

  this._width = value;

 }

 //height를 위한 getter

 get height() {

  return this._height;

 }

 //height를 위한 setter

 set height(value) {

  if (value <= 0) {

   console.log("세로길이는 0보다 커야 합니다.");

   return;

  } else if (typeof value !== "number") {

   console.log("[오류] 세로길이로 입력된 값이 숫자타입이 아닙니다.");

   return;

  }

  this._height = value;

 }


 //getArea: 가로 * 세로 = 넓이

 getArea() {

  const a = this._width * this._height;

  console.log(`넓이는 ${a} 입니다.`);

 }

}


const Rec1 = new Rectangle(d, e);

Rec1.getArea();

// const Rec2 = new Rectangle(15, 30);


const Rec1 = new Rectangle(1, -1);

Rec1.getArea();

// const Rec2 = new Rectangle(15, 30);

취소
 공유
취소
댓글 0
댓글 알림
나의얼굴