ProtoType Chaining

yuJaeWu·2020년 12월 9일
0

TIL

목록 보기
30/68

프로토타입 체인이란?


프로토타입 체인이란 프로토타입을 통한 상속에서 해당 생성자 A가 어떠한 기능을 부모 생성자 B에게서 가지고 와서 사용을 할때,
실제 실행에서는 A를 실행을 했는데 해당 생성자는 기능을 가지고 있지않아서
A의 PROTO를 참고하여 부모 생성자 B로 가서 해당기능이 있는지를 확인한다.
이 과정을 프로토타입 체인이라고 한다.


프로토타입 체인에 있어서의 관계



일단 Character라는 생성자 함수(객체)를 만들었다.
이 함수가 만들어짐과 동시에 A(Character.prototype)이라는 객체도 생성된다.
이것이 정말로 중요한데 이 prototype이라는 객체는 은닉객체이며,
생성자 Constructor의 권한도 가지고 있다.
그렇기에 Character의 prototype은 이 A의 프로토타입을 가르키고 있으며,
A의 Constructor는 Character를 가르키고 있다.(서로를 가르키는 셈)
그리고 레벨업이라는 메소드를 A에 만들어주었다.(Character.prototype.levelUp)
이렇게 하고 new 키워드를 사용하여 새로운 객체를 두개 만들어 주었는데,
이친구들은 자신들의 proto로 A를 가르키고 있으며, 그렇기에 레벨업도 할수있다.
말그대로 이 전사와 마법사는 레벨업이라는 기능이 없지만,
프로토타입 링크를 이용하여 레벨업을 할수있다.
이것들이 앞서 말한 프로토타입 체인이며, 생성자와 프로토타입의 관계이다.


Object.create


Object.create는 파라미터로 들어가는 프로토타입을 상속하는 새로운 객체를 만드는 메소드이다.
Object.create는 객체를 만들되 생성자는 실행하지 않는 것, 즉 그냥 프로토타입만 넣음.

출처: zerocho.com


Class와 super


class는 ES6에서 새로 도입된 기능이다.
물론 다른 객체지향 언어에서는 많이 사용하였지만, 자바스크립트는
프로토타입 기반 객체지향 언어라는 것을 잊지말자.
super는 부모 클래스에 접근할수있는 함수이다.
사용 예시는


profile
어중간한 성공보다는 확실한 실패가 좋다.

0개의 댓글