클래스

class person {
	name; // 속성 (fields)
	age; // 속성 (fields)
	speak(); //행동(methods)
}

Class

Object

1. 클래스 선언하기

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c5ea91dc-38e2-47bf-957e-1df821ba15f5/.png

2. Getter and setters

ex) age가 마이너스면 말이 안되기 때문에 젠틀하게 고쳐주거나 알려줄 때 사용함

class User {
    constructor(firstName, lastName, age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age; //age는 getter의 age를 불음
		
		/*get : 값 반환*/
    get age() {
        return this._age; //this.age라고 쓸 수 있지만 그렇게 되면 set에서 무한정으로 value값이 도출되기 때문에 _를 사요앟ㅁ

	}
	/*set : 값 설정*/
    set age(value){
        this._age = value < 0 ? 0 : value; //0보다 작으면 0으로 써주거라
    }
}

const user1 = new User('Steve', 'Job',-1);
console.log(User.age); // 0

3. Fields (public, private)

class Experiment {
    publicField = 2; //public 
    #privateField = 0; // private으로 #을 붙이면 됨 (class 외부에서 사용 불가)
}
const experiment = new Experiment();
console.log(experiment.publicField); //2
console.log(experiment.privateField); //undefined

4. Static - properties and methods

기초 : 클래스와 메소드들은 새로운 object를 만들때마다 고대로 복제되고 값만 우리가 지정한대로 변경되어 만들어짐