TIL_프로토타입

박성훈·2022년 7월 22일

JavaScript

목록 보기
22/25
post-thumbnail

프로토타입을 알아보기 전에 JavaScript의 특징에 대해서 먼저 확인할 필요가 있다.

JavaScript의 특징

자바스크립트는 객체지향언어이기 때문에 클래스의 개념이 없다.
ES6 문법부터 class문법이 추가되긴 했지만, 그렇다고 자바스크립트가 클래스 기반 언어가 된 것은 아니다.

그렇기때문에 클래스 대신 프로토타입 기반으로 이루어져 있다.

프로토타입

JavaScript에서 상속을 하기 위한 매커니즘

위의 사진처럼 함수가 정의되고 나면, 함수객체와 Prototype Object가 생성된다.

Prototype Object는 생성된 함수를 가리키는 constructor__proto__ 속성을 가지고 있다.
그리고 생성된 함수 Person은 Prototype Object를 가리키는 Prototype 속성을 가지고 있다.

이렇게 되므로써 Person.prototype을 통해 Prototype Object을 참조할 수 있게 된다.

__proto__

__proto__ 속성은 모든 객체에 포함되어 있다.

__proto__를 통해 객체가 생성될 때 조상노드였던 함수의 Prototype Object를 가리킨다.
그렇기때문에 kim에는 eyes나 nose라는 메소드가 없는데도, __proto__를 통해 조상노드 즉 Person의 Prototype Object에 접근하기 때문에, 해당 메소드를 사용할 수 있게 된다.

이처럼 인스턴스에서 거슬러 올라가 클래스나 함수의 Prototype Object에 접근하는 것을 Prototype Chain이라고 한다.

profile
프론트엔드 학습일지

0개의 댓글