Prototype

ALTANIS·2021년 2월 26일
0

자바스크립트는 클래스라는 개념이 없다.
(Es2015부터 class 키워드를 지원하지만 문법적인 것일 뿐이라고 한다.)
기존 객체를 복사하여 새로운 객체를 생성하는 프로토타입 기반의 언어라고 한다.

Prototype ?

자바스크립트의 모든 객체는 자신의 부모 역할을 담당하는 객체와 연결이 되어있다. 연결 되어 있는 객체를 Prototype이라고 부르며 모든 객체는
Prototype으로부터 프로퍼티와 메소드를 상속 받는다.

자바스크립트의 모든 객체는 최소 하나 이상의 다른 객체로부터 상속을 받는데 상속 정보를 제공하는 부모 객체를 Prototype이라고 한다.
Prototype Object와 Prototype Link 이 둘을 통틀어 Prototype이라고 한다.


Prototype Object ?

함수가 정의되면 2가지 일이 동시에 이루어진다.

  • 함수에 Constructor(생성자) 자격이 생긴다.

생성자 덕분에 new를 통해서 객체를 만들어 낼 수 있게 되는 것이다.

  • 함수의 Prototype Object 생성 및 연결이 된다.

생성된 함수가 prototype이라는 속성을 통해서 Prototype Object에 접근이 가능하다.

Prototype Object의 기본 속성은 constructor와 __proto__ 를 가지고 있는데
proto가 Prototype Link이다.


Prototype Link ?

__proto__ 특징

  • __proto__가 Prototype Link 이다.
  • 모든 객체가 빠짐 없이 가지고 있는 속성이다.
  • 객체가 생성될 때 상위 함수인 Prototype Object를 가리킨다.

만약 객체에서 어떤 속성을 찾으려고 한다면
__proto__ 에서 속성을 찾을 때 까지 상위 프로토타입을 탐색하고
찾지 못했다면 undefined를 리턴하고 찾았다면 결과값을 리턴한다.

위와 같이 연결되어 있는 형태를 Prototype Chain 이라고 한다.
그렇기 때문에 모든 객체의 최상위는 Object Prototype Object이다.


👀 출처

Prototype Object, Prototype Link의 개념은 이 블로그를 참고하여 작성 했다.
이해하기 어려웠었는데 이 글을 보고 이해가 잘 되서 내가 보려고 이렇게 따로 정리했다.

0개의 댓글