20210822-TIL

노강표 Noh Gang Pyo ·2021년 8월 23일

모던 자바스크립트 딥다이브

19장 프로토타입

상속과 프로토타입

상속은 어떤 객체의 프로퍼티 또는 메서드를 다른 객체가 상속받아 그대로 사용할 수 있는것을 말한다.
이 상속을통해 객체간 불필요한 중복을 제거할 수있다. 어떻게 상속을 구현할 수 있을까?
객체간 상속을 구현하기위해 프로토타입 객체( 또는 줄여서 프로토타입)을 이용한다.

프로토타입 객체(프로토타입)

프로토타입이란 어떤 객체의 상위(부모) 객체의 역할을 하는 객체로서 프로토타입을 상속받은 하위(자식)객체는 상위 객체의 프로퍼티를 자신의 프로퍼티처럼 자유롭게 사용할 수있다.
모든 객체는 [[Prototype]]이라는 내부슬롯을 가진다. 이 내부 슬롯에 프로토타입이 저장된다.
생성자함수와 프로토타입은 항상 쌍으로 생성된다.

[[prototype]]에 저장되는 프로토타입은 객체 생성 방식에 의해 결정된다.

객체를 생성하는 3가지 방법
1.객체 리터럴
2.생성자함수
3.Object 생성자함수

이중 1번과 3번에의해 생성되는 객체의 프로토타입은 object.prototype로 동일하며 이 프로토타입의 constructor 프로퍼티엔 object생성자 함수의 참조값이 값으로 들어있다.
1번과 3번의 방식의 차이는 프로퍼티를 추가하는 방식에있어 차이가있는데, 1번은 객체를 선언하면서 내부에 프로퍼티를 추가하지만, 3번방식은 우선 빈 객체를 생성한 이후 프로퍼티를 추가해야한다.

2번에의해 생성되는 객체의 프로토타입은 생성자 함수의 prototype프로퍼티에 참조값으로 들어있는 객체다.표준 빌트인 객체인 Object 생성자 함수와 같이 생성된 Object.prototype 안에는 다양한 빌트인 메서드를 갖고 있지만, 직접 정의한 2번방식의 생성자함수와 함꼐 생성된 프로토타입안에는 constructor 프로퍼티 뿐이다.

profile
FE developer 🙂

0개의 댓글