프로토타입 체인 에 대해서 알아보자!
프로토타입이란?
프로토타입을 한마디로 정의하면 "원형 객체"이다
prototype을 이용해 새로운 객체를 만들어낼수고 prototype을 활용하여 만들어진 객체는 prototype 객체의 속성들을 물려받게된다


프로토타입과 chain란?
JavaScript 는 특정 객체의 프로퍼티 혹은 메서드에 접근할 때, 그 특정 객체에 해당하는 프로퍼티나 메서드가 없다면 [[prototype]]이 가리키는 객체를 따라가며 자신의 부모 역활을 프로토타입 객체의 해당하는 프로퍼티나 메서드를 찾는데 이를 프로토타입 체인이라고 합니다
prototype 객체는 기본적인 속성으로 constructor 와 __proto__를 가지고 있습니다
이중 __proto__에는 자식의 부모 prototype 객체를 가리키는 링클를 담고 있습니다
프로토타입 체인은 __proto__의 특징을 이용하여, 부모 객체의 프로퍼티나 메서드를 차례로 검색하는것을 의미합니다
이 말의 의미는 특정 객체의 프로퍼티나 메서드 접근 시 자신의 것 뿐 아니라 부모 객체의 것도 접근해서 사용가능하다 는 것입니다
모든 프로토타입 체이닝의 종점은 Object.prototype 입니다
Ojbect는 가장 상위객체입니다 ( 모든 객체의 부모 )

Prototype란?
JavaScript 에서 상속의 개념을 갖게해주는 prototype 입니다
prototype는 유전자와 같은 개념이며
- 부모입장 ( prototype ) : 유전자 , 자손에게 넘겨주고싶은 메소드 , 변수를 정의함
- 자식입장 ( __proto__) : 내가 받은 유전자 접근하기 , 부모에게 유전받은 prototype를 참조할수있습니다
__proto__란?
모든 객체는 __proto__를 통해 자신이 물려받은 [[Prototype]] 값에 접근할수있습니다
하지만 [[Prototype]] 내부 슬롯에는 직접접근은 불가능합니다
이유는 프로토타입 체인의 단방향을 지키기위해서이며 만약 직접접근이 가능하다면 서로가 서로의 프로토타입이 되면서 프로토타입의 무한루프가 발생할수있기때문입니다
따라서 __proto__ 프로퍼티만 접근이 가능합니다

'코드스테이츠 시작후 정리' 카테고리의 다른 글
| 섹션 2 회고 (0) | 2022.08.19 |
|---|---|
| 코드스테이츠 블로깅 여덟번째 REST API (0) | 2022.08.05 |
| Section1 회고 출발이 좋은가? (0) | 2022.07.23 |
| 코드스테이츠 블로깅 여섯번째 프로토타입과 class (0) | 2022.07.22 |
| 코드스테이츠 블로깅 다섯번째 객체 지향 프로그래밍 ( OOP ) (0) | 2022.07.22 |