: class를 상속한 class를 만들 때 사용함
: extends로 상속중인 부모 class의 constructor()를 의미
class Grand {
constructor(lastName, name){
this.lastName = lastName;
this.name = name;
}
}
var grand1 = new Grand('kim', 'kil')
console.log( grand1)
// Grand라는 class를 상속한 Parent
class Parent extends Grand{
constructor(lastName, name, age){ // 파라미터 명시
super(lastName, name);
this.age = age; // 새로운 속성 추가
}
}
var parent1 = new Parent('Park', 'Kil', 30);
console.log(parent1);

class Grand {
constructor(lastName, name){
this.lastName = lastName;
this.name = name;
}
sayHi(){
console.log('hello grand'); // Grand.prototype에 추가, super없이 상속 가능
}
}
var grand1 = new Grand('kim', 'kil')
console.log( grand1)
class Parent extends Grand{
constructor(lastName, name, age){
super(lastName, name);
this.age = age;
}
sayHi(){
console.log('hello parent')
super.sayHi(); // constructor 바깥에서 super를 쓰면 부모 프로토타입을 의미함
// 부모 프로토 타입의 sayHi 실행 (hello grand)
}
}
var parent1 = new Parent('Park', 'Kil', 30);
console.log(parent1);
console.log(parent1.sayHi()) // 가까운 프로토타입의 것 출력함 (hello parent)
let person = {
name : 'park',
age : 30,
nextAge(){ // 내년 나이 계산 함수
return this.age + 1
},
}
console.log(person.nextAge()) //31
사람.age = 20로 하지 않고
사람.setAge(20)으로 하는 이유
: 내부에 있는 name, age 변수를 직접 건드리지 않아서 실수를 방지
안전장치 예시)
나이에 숫자를 집어넣어야하는데 이렇게 실수로 '40' 이라는 문자를 집어넣으면 문자로 입력 됨.
이때 parseInt()를 사용해 문자를 숫자로 바꿔주는 안전장치 사용 가능
let person = {
name : 'park',
age : 30,
setAge(age){
this.age = parseInt(age); // 문자를 정수로 변환 (데이터 수정전 미리 검사)
},
}
person.setAge('20'); // 20
함수를 만들어쓰면 setAge(40) 처럼 소괄호까지 써야하고, 데이터를 넣기 복잡해짐
→ get/set 키워드를 함수 옆에 추가
set 붙은 함수들은 setter
get 붙은 함수들은 getter
let person2 = {
name : 'park',
age : 50,
get nextAge(){
return this.age + 1 // getter는 return이 반드시 있어야 함 / 파라미터 없어야 함
},
set setAge(age){
this.age = parseInt(age); // setter는 파라미터가 1개 있어야 함
},
}
console.log(person2.nextAge);
person2.setAge = '40';
class Person {
constructor(name, age){
this.name = name;
this.age = age;
}
get nextAge(){
return this.age + 1
}
set setAge(age){
this.age = age;
}
}
let person3 = new Person('park', 100);
console.log(person3.nextAge) // get 사용시 () 생략 가능
console.log(person3.setAge=80);