2월 27일 공부일기#

이건우·2021년 2월 28일
0

TiL

목록 보기
1/72
class person { 
// 생성자 
constructor(name, age) {
    // fields
    this.name = name;
    this.age = age;
  }
//methods
speak(){
    console.log(`${this.name} : Hello!`);
  }
}
--------------------------- class 부분이라 할 수있다.---
let lee = new person('Geonwoo', 20) ; 
console.log(lee.name);  // Geonwoo
console.log(lee.age);   // 20
lee.speak();            // Geonwoo : Hello!

class는 원형객체(청사진)을 의미함. 컨테이너와 같으며

class는 컨테이너 같은것들,
+데이터와 메소드로 이루어져있음.
주로 붕어빵 틀에 비교됨
생성자 , constructor
주로 붕어빵. 함수.

Getter 와 setter

우리가 자판기(class) 에서 동전을 넣고 커피를 뽑는데,

(동전넣기, 커피뽑기 -> 메소드 2가지)

하지만 커피가 만약 -1이면 ? 사용x 우리는
사용자가 -1을 해줘도 0으로 만들어줘야할 필요성이 있음.

이걸방지하기위해 getter와 setter 가 필요하다.

하지만, 자칫하다 아래와같이 콜스택으로 무한루프가 될수도있다. (내가 제일 약한부분..)

https://youtu.be/_DLhUBWsRtw?t=777
유튜브 출처 : 드림코딩 by 엘리

그래서 아래와같이 입력해줘야한다.

class person { 
    // 생성자 
    constructor(name, age) {
        // fields
        this.name = name;
        this.age = age;
      }
    //methods
    speak(){
        console.log(`${this.name} : Hello!`);
      }

    get age() {
        return this._age;
    }

    set age(value) {
        if(value <0) {
            throw Error('age can not be negative');
        }
        this._age = value < 0 ? 0 : value;
    }  

}
    
    let lee = new person('Geonwoo', -1) ; 
    console.log(lee.name);  // Geonwoo
    console.log(lee.age);   // 0
    lee.speak();            // Geonwoo : Hello!

ps. 어제 써놓고 출간하지못함..

profile
내가 느낌만알고 한줄도 설명할줄 모른다면 '모르는 것'이다.

0개의 댓글