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. 어제 써놓고 출간하지못함..