
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
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);
