javaScrip - 프로토타입 체인

춤추는개발자·2023년 4월 3일
0
post-thumbnail

프로토타입 체인이란?

자바스크립트는 객체의 프로퍼티, 메서드에 접근하려고 할 때 해당 객체에 접근하려는 프로퍼티가 있는지 검색 합니다. 만약 없다면 [[Prototype]] 내부 슬롯에 할당되어 있는 프로토타입 객체의 프로퍼티를 순차적으로 검색합니다. 만약 여기에도 없다면 Object.prototype 까지 올라가서 접근하려는 프로퍼티를 찾습니다. 이것을 프로토타입 체인 이라고 합니다.
자바스크립트는 객체지향 프로그래밍의 상속을 프로토타입 체인으로 구현 합니다.


프로토타입 체인의 최상위에 위치하는 객체는 언제나 Object.prototype 이다.

프로토타입 체인의 최상위 객체는 항상 Object.prototype 입니다.
곧 이 말은 모든 객체는 Object.prototype 객체를 상속 받는다는 말 입니다.

그럼 Object.prototype 의 내부 슬롯인 [[Prototype]] 의 참조 값은 무엇일까요?
null 입니다. 다시 말하지만 Object.prototype 객체는 프로토타입 체인의 마지막이고 기차역으로 말하자면 종점 역 입니다.

프로토타입 체인에 없는 프로퍼티에 접근하면?

const soccerPlayer = {
  name : "kane",
  age : 3,
  hobby : "soccer",
};

console.log(soccerPlayer.hello());

위의 코드를 보시면 soccerPlayer 라는 객체를 리터럴 표기법으로 생성하고 console.log 를 이용해 hello 메서드를 호출해서 그 반환값을 출력 해 봅시다.
이때 무슨 일이 일어날까요?
프로토타입 체인은 아래와 같이 형성 될 것 입니다.

먼저 자바스크립트 엔진은 soccerPlayer 객체에서 hello 메서드를 검색 할 것 입니다.
soccerPlayer 객체에 hello 메서드가 없다면 [[Prototype]] 내부 슬롯에 바인딩 되어 있는 Object.prototype 으로 이동하여 hello 메서드를 검색 할 것 입니다.
Object.prototype 객체에도 없기 때문에 undefined 를 반환 할 것 입니다.

프로퍼티는 프로토타입 체인에서 검색하고 식별자는 스코프 체인에서 검색 합니다.

0개의 댓글