프로토타입 체인 에 대해서 알아보자!

프로토타입이란?

프로토타입을 한마디로 정의하면 "원형 객체"이다

 

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__ 프로퍼티만 접근이 가능합니다

+ Recent posts