[JavaScript]프로토타입 체인

챔수·2023년 3월 16일
1

개발 공부

목록 보기
23/101
class Person {
  constructor(first, last, age, gender, interests) {
    this.name = {
      first,
      last
    };
    this.age = age;
    this.gender = gender;
    this.interests = interests;
  }

  greeting() {
    console.log(`Hi! I'm ${this.name.first}`);
  };

  farewell() {
    console.log(`${this.name.first} has left the building. Bye for now!`);
  };
}

사람을 나타내는 클래스를 만들었다. 여기에 Person을 상속받는 Teacher 클래스를 만들려면 어떻게 해야할까. 먼저 extends키워드를 통해 상속받을 클래스를 명시해 준다.

class Teacher extends Person {
  constructor(first, last, age, gender, interests, subject, grade) {
    this.name = {
      first,
      last
    };

  this.age = age;
  this.gender = gender;
  this.interests = interests;
  // 과목과 등급은 교사에 따라 다릅니다.
  this.subject = subject;
  this.grade = grade;
  }
}
  • constructor()에서 첫번쨰로 super() 연산자를 정의하면 코드가 조금 더 간결해진다. super()는 상위 클래스의 생성자를 호출하며 super()의 매개변수를 통해 상위 클래스의 멤버를 상속받을 수 있는 코드이다.
class Teacher extends Person {
  constructor(first, last, age, gender, interests, subject, grade) {
  super(first, last, age, gender, interests);
    
  // 과목과 등급은 교사에 따라 다릅니다.
  this.subject = subject;
  this.grade = grade;
  }
}

Teacher의 인스턴스를 생성하면 Teacher와 Person양 쪽의 메소드와 속성을 사용할 수있다.

let snape = new Teacher('Severus', 'Snape', 58, 'male', ['Potions'], 'Dark arts', 5);
snape.greeting(); // Hi! I'm Severus.
snape.farewell(); // Severus has left the building. Bye for now.
snape.age // 58
snape.subject; // Dark arts
profile
프론트앤드 공부중인 챔수입니다.

0개의 댓글