인스턴스 객체의 key에 접근할 때, 해당 객체에게 key가 없다면
그 다음으로 상위 프로토타입(원형) 속성에서 key가 있는지 확인한다.
없다면 더 상위의 프로토타입(부모)에서 찾는 것을 프로토타입 체인이라고 한다.
최상위는 Object이고, Object 다음은 null이다.
null
: 더 이상 프로토타입이 없다고 정의된다.
프로토타입 체인의 종점 역할을 한다.
상속 관점에서 보면 자바스크립트의 유일한 생성자는 객체밖에 없다. 각각의 객체는 프로토타입(prototype)이라는 은닉 속성을 가지는데, 자신의 프로토타입이 되는 다른 객체를 가르킨다. 그 객체의 프로퍼티 또한 다른 프로퍼티를 가지고 있고 이것이 반복 되다가 결국 null을 프로토타입으로 가지는 오브젝트에서 끝난다.
__proto__
: 비표준 방식.
let div = document.createElement('div');
div.__proto__.__proto__ // HTMLElement
div.__proto__.__proto__.__proto__ // Element
// Dom도 prototype이다.
getPrototypeOf
: 표준 방식.
let div = document.createElement('div');
Object.getPrototypeOf(div) // HTMLDivElement