class Person {
name; // 프로퍼티 (속성 - field)
age; // 프로퍼티 (속성 - field)
speak(); // function (행동 - 메서드)
}
class
object
class Person {
// constructor (생성자)
constructor(name, age) {
// fields
this.name = name;
this.age = age;
}
// methods
speak() {
console.log(`${this.name}: hello!`);
}
}
const jack = new Person('jack', 20);
console.log(jack.name); // jack
console.log(jack.age); // 20
jack.speak(); // jack: hello!
class User {
constructor (firstName, lastName, age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
// get 키워드를 이용해서 값을 리턴
get age() {
return this.age2; // call stack 에러 방지를 위해 게터&세터 안에서 쓰여지는 변수 이름을 조금 다른걸로 만들어줘야 함.
} // 사용자가 get age 를 호출하게 되면 우리는 바로 this age2 를 리턴해야되고,
// set 키워드를 이용해서 값을 설정, set은 값을 설정해야 하기 때문에 value 를 받아와야함!
set age(value) {
if (value < 0) {
throw Error('age can not be negative!');
}
this.age2 = value;
} // 새로운 value 를 받으면 우리가 this age2 를 value 로 설정하게 된다.
}
const user1 = new User('Steve', 'Job', -1);
console.log(user1.age);
// 사용자가 실수로 age를 -1 로 지정해버렸다.
// 이는 객체지향적인 개념으로 봤을 때 말이 안됨...어떻게 사람 나이가 -1?
// 이렇게 class를 사용하는 사용자가 잘못 사용해도 조금 더 방어적인 자세로 만들 수 있도록 해주는 것이 바로 Getter and Setters!
⬆️ 이러한 경우 getter 와 setter 를 통해 문제를 해결할 수 있다!