프로토타입 체인은 __proto__
의 특징을 이용하여, 부모 객체의 프로퍼티나 메서드를 차례로 검색하는 것을 의미합니다.
특정 객체의 프로퍼티나 메서드 접근 시 해당 객체에 접근하려는 프로퍼티나 메서드가 없다면 [[Prototpye]]
내부 슬롯의 참조에 따라 부모 객체의 프로퍼티 및 메소드에도 접근을 해 사용을 합니다.
const array=[0,1]
array.hasOwnProperty(0) //true
Object가 아니기 때문에 출력되지 않지 않을까라고 생각할 수 도 있지만, 정상적으로 출력되었습니다.
이는 array < Array < Object 의 체이닝의 구조를 가지고 있기 때문에 배열도 기존 객체가 가지고 있는 메서드들을 활용할 수 있습니다.
const arr = [1, 2, 3]
이렇게 간단히 arr배열을 생성한 후 수많은 메소드를 사용할 수 있는 것도 바로 프로토 타입 체인입니다.
const animal = {
sayName() {
return 'ANIMAL'
}
}
console.log(animal.sayName()); // ANIMAL
const dog = Object.create(animal);
dog.sayName(); // ANIMAL
dog
도 체이닝을 통해 sayName
메소드를 사용할 수 있는 것을 확인할 수 있습니다.
자바스크립트는 프로토타입 체인을 통해 __proto__
가 가리키는 링크를 따라서 자신의 부모 역할을 하는 프로토타입 객체의 프로퍼티나 메소드를 접근할 수 있습니다
또한 이러한 프로토타입 체인을 통해 객체지향 프로그램의 구조를 가지고, 상속 기능을 구현할 수 있게 됩니다.
참고자료