객체지향 프로그래밍 part3. 프로토타입과 클래스 & 프로토타입 체인

holang-i·2023년 3월 15일
0
post-thumbnail

mdn Object prototypes 참고

프로토타입 기반 언어(prototype-based language)

  JavaScript는 흔히 프로토타입 기반 언어라고 얘기되는데 이 말은 모든 객체들은 속성들과 메소드를 상속 받기 위한 템플릿으로써 프로토타입 객체(prototype object)를 가진다는 의미이다.


프로토타입 체인(prototype chain)

  프로토타입 객체도 또 다시 상위 프로토타입 객체로부터 속성과 메서드를 상속 받을 수 있고, 그 상위 프로토타입 객체도 마찬가지이다.
이를 프로토타입 체인이라 부르며 다른 객체에 정의된 메소드와 속성을 한 객체에서 사용할 수 있도록 하는 근간이다.

  상속되는 속성과 메소드들은 각 객체가 아니라 객체의 생성자의 prototype이라는 속성에 정의되어 있다.


프로토타입 객체 이해하기

  class 구문은 새로운 클래스 작성을 의민하고, Class 블록 내에서 모든 기능을 정의할 수 있다.

  • constructor( ) 메서드는 Person 클래스의 생성자를 의미한다.
  • speak( ), eat( )는 멤버 메서드이다. (클래스의 메서드는 생성자 다음에 아무 메서드나 추가할 수 있다.)

  • new 연산자로 객체 인스턴스를 생성할 수 있다.



class 문법으로 상속

하위클래스 생성: extends 키워드를 통해 상속받을 클래스를 명시

  위에서 사람을 나타내는 클래스를 만들었고, Person 클래스는 일반적인 사람이 가질만한 특성들이 나열되어있다.

  Person을 class 문법으로 상속받아 새로운 클래스를 만들어 볼 것인데 이 작업을 하위 클래스 생성이라 부른다.


하위클래스를 만드려면 JavaScript에서는 extends 키워드를 통해 상속받을 클래스를 명시해줘야 한다.

constructor( )에서 첫 번째로 super( )연산자를 정의하면 이는 상위 클래스의 생성자를 호출하고, super( )의 매개변수를 통해 상위 클래스의 멤버를 상속받을 수 있는 코드이다.

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

profile
🌿 주니어 프론트엔드 개발자입니다! 부족하거나 잘못된 정보가 있다면 알려주세요:)

0개의 댓글