[Javascript] 프로토타입 체인

youngseo·2022년 2월 15일
0

Javascript

목록 보기
17/46
post-thumbnail

프로토타입 체인

프로토타입 체인은 __proto__의 특징을 이용하여, 부모 객체의 프로퍼티나 메서드를 차례로 검색하는 것을 의미합니다.

특정 객체의 프로퍼티나 메서드 접근 시 해당 객체에 접근하려는 프로퍼티나 메서드가 없다면 [[Prototpye]] 내부 슬롯의 참조에 따라 부모 객체의 프로퍼티 및 메소드에도 접근을 해 사용을 합니다.

리터럴 방식으로 생성된 객체의 프로토타입 체인

const array=[0,1]
array.hasOwnProperty(0) //true

Object가 아니기 때문에 출력되지 않지 않을까라고 생각할 수 도 있지만, 정상적으로 출력되었습니다.

이는 array < Array < Object 의 체이닝의 구조를 가지고 있기 때문에 배열도 기존 객체가 가지고 있는 메서드들을 활용할 수 있습니다.

const arr = [1, 2, 3]

이렇게 간단히 arr배열을 생성한 후 수많은 메소드를 사용할 수 있는 것도 바로 프로토 타입 체인입니다.

Object() 생성자 함수로 생성된 객체의 프로토타입 체인

const animal = {
  sayName() {
    return 'ANIMAL'
  }
}

console.log(animal.sayName()); // ANIMAL

const dog = Object.create(animal);
dog.sayName(); // ANIMAL

dog도 체이닝을 통해 sayName 메소드를 사용할 수 있는 것을 확인할 수 있습니다.

정리하며

자바스크립트는 프로토타입 체인을 통해 __proto__가 가리키는 링크를 따라서 자신의 부모 역할을 하는 프로토타입 객체의 프로퍼티나 메소드를 접근할 수 있습니다

또한 이러한 프로토타입 체인을 통해 객체지향 프로그램의 구조를 가지고, 상속 기능을 구현할 수 있게 됩니다.


참고자료

  • MDN
  • 장현석 강사님의 강의
  • 코어자바스크립트

0개의 댓글