JSFlow _ Prototype(프로토타입)

장봄·2020년 5월 31일
0

"정재남"님의 JSFlow

목록 보기
3/5

[Prototype(프로토타입)]

Constructior(생산자)에 new 연산자를 이용해서 instance를 만든다.

이 instance는 생산자의 prototype라고 하는 프로퍼티의 내용이 _ _ proto _ _ 의 프로퍼티로 참조를 전달하게 된다.

이것을 이미화한것이 아래의 이미지이다.

여기서 instance의 proto는 생략이 가능하다.


Array를 이용한 Constructor의 예시

그럼 여기서 예시를 하나 들면서 이해를 깊게 들어가보자.

Constructor는 Array라고 하고 instance는 [1, 2, 3]이라는 값을 넣어서 비교를 할 수 있다. 콘솔에 console.dir([1, 2, 3])을 넣고 출력하면 아래의 이미지처럼 나온다.

Array를 열고 proto를 열어보니 많은 Array의 prototype의 프로퍼티들이 확인되고 있다. 여기서 눈여겨 봐야 할 부분 중 1군데는 확대한 아래의 이미지이다.

맨 아래에 constructor를 보면 Array()로 확인되는 것을 볼 수 있다. instance._ _ proto _ _.constroctor = Array가 된다는 의미이다.


[Prototype chaining(프로토타입 체이닝)]

prototype은 Object의 new연산자를 이용해서 만든 instance이다. 그래서 모든 prototype들은 Object.prototype을 사용할 수 있게 된다. 이것을 프로토타입 체이닝이라고 한다.

위의 경우처럼 다른 타입은 Object.prototype의 메소드를 사용할 수 있지만 Object만 메소드를 공유하고 공유받는 메소드는 없다. 그래서 Object에서만 사용가능한 함수를 생성자함수에 지정되어 있다.

profile
즐겁게 배우고 꾸준히 블로깅하는 개발자입니다 ;>

0개의 댓글