let studentA ={
name:"Mike",
age:14,
grade:"A-",
study(){
console.log(`${this.name}은 공부중입니다.`)
}
}
let studentB ={
name:"Kevin",
age:14,
grade:"C+",
study(){
console.log(`${this.name}은 공부중입니다.`)
}
}
let studentC ={
name:"Tom",
age:14,
grade:"B-",
study(){
console.log(`${this.name}은 공부중입니다.`)
}
}
위와같이 구조가 똑같이 생긴 객체가 3개가 있다. 만약 학교에서 학생들을 이런식으로 관리한다면 수백,수천개를 만들어야해서 완전 노가다가 될것이다.
이럴때 필요한것이 class 이다
class Student{
//필드
name;
age;
grade;
//생성자
constructor(name,age,grade){
this.name = name;
this.age = age;
this.grade = grade;
}
study(){
console.log(`${this.name}은 공부중입니다.`)
}
}
// 인스턴스
let studentA = new Student("Mike",14,"A-")
console.log(studentA.name) // "Mike"
studentA.study() // "Mike은 공부중입니다."
클래스(class)는 객체를 찍어내기위한 붕어빵 틀이라고 생각하면 편하다. 클래스를 통해 만들어진 값을 "인스턴스"라고 한다.
여기서 만약 개발자학생 클래스를 정의한다면 어떻게하면될까?
class StudentDeveloper{
//필드
name;
age;
grade;
skill;
//생성자
constructor(name,age,grade,skill){
this.name = name;
this.age = age;
this.grade = grade;
this.skill = skill;
}
study(){
console.log(`${this.name}은 공부중입니다.`)
}
skill(){
console.log(`${this.skill}로 개발중입니다.`)
}
}
위와같이 만들면 되긴한다 하지만 위의 Student 클래스와 상당히 중복되는 부분이 많다 이럴떄 사용하는것이 extends 키워드이다.
class StudentDeveloper extends Student{
skill;
constructor(name,age,grade,skill){
super(name,age,grade)
this.skill
}
skill(){
console.log(`${this.skill}로 개발중입니다.`)
}
}
extends 키워드는 상속 이라고도한다. StudentDeveloper 클래스는 Student 클래스를 상속 받고 있기 때문에 Student 클래스가 가진 필드값과 메서드를 사용할 수 있다. 주의할점은 super 를 사용하여 부모클래스의 필드값을 가져와야한다는것이다.
'Javascript' 카테고리의 다른 글
JavaScript - 함수 호출 분석 해보기 (0) | 2023.07.07 |
---|---|
Javascript - 널 병합 연산자 "??" (0) | 2023.06.26 |
JavaScript - Scope (0) | 2023.06.04 |
JavaScript - 호이스팅 (0) | 2023.06.04 |
JavaScript - 자바스크립트 동작원리 와 비동기처리 동작원리 (0) | 2023.05.23 |