class 는 정보를 만들지 않고 "틀"을 만드는것이다
class:template
object 는 "instance of a class" 클래스로 인한 정보가
들어가진 객체를 object 라고 불린다.
object:생성자는 주어진 값의 객체 래퍼를 생성합니다. 주어진 값이 null이거나 undefined면 빈 객체를 생성해 반환하고, 그렇지 않으면 값에 맞는 자료형의 객체를 반환합니다. 만약 값이 이미 객체이면 그 값을 그대로 반환합니다.
class Person{
//constructor
constructor(name,age){
// fields
this.name = name;
this.age=age;
}
//methods
speak(){
console.log(`${this.name}:hello!`)
}
}
const ellie = new Person('ellie',20);
console.log(ellie.name);// ellie
console.log(ellie.age);//20
ellie.speak();//ellie:hello!
접근자 프로퍼티는 'getter(획득자)'와 ‘setter(설정자)’ 메서드로 표현됩니다. 객체 리터럴 안에서 getter와 setter 메서드는 get과 set으로 나타낼 수 있습니다.
getter와 setter를 ‘실제’ 프로퍼티 값을 감싸는 래퍼(wrapper)처럼 사용하면, 프로퍼티 값을 원하는 대로 통제할 수 있습니다.
아래 예시에선 User class 에서 age을 위한 setter를 만들어 age의 값이 0이하로 가는걸 방지 하고있습니다. 실제 값은 별도의 프로퍼티 _age에 저장됩니다.
class User{
constructor(firstName,lastName,age){
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
get age(){
return this._age;
}
set age(value){
this._age = value<0 ? 0:value;
}
}
const user1 = new User('Steve','Job',-1);
console.log(user1.age)//0