Prototype Chain을 말하려면 Object를 알아야한다.
JavaScript에서의 거의 모든 객체는 Object의 인스턴스이다. 일반적인 객체는 Object.prototype의 속성과 메소드를 상속받고, 그 중 일부는 숨겨진다.
JavaScript는 Class의 개념이 ES6에서 처음 등장했고 이전에는 prototype을 이용해 특정 함수의 '기반 클래스'객체를 만들어 사용했다.
Prototype Chain에서 중요한 몇가지 키워드가 있다.
Object.prototype
: Object의 프로토타입(원형) 객체를 나타낸다.
Object.create()
를 이용해 다른 객체의 prototype을 상속해줄 수 있다.prototype
은 함수만을 갖을 수 있는 프로퍼티이다. 함수의 프로토타입 객체를 프로토타입 프로퍼티(Prototype Property)라고한다.Object.prototype.__proto__
: 객체가 초기화 될 때 프로토 타입으로 사용된 객체를 가르킨다.
__proto__
는 모든 객체가 가지고 있는 속성(Object.prototype는 제외)__proto__
는 최종적으로는 Object를 가르킨다.Object.prototype.constructor
: 객체의 프로토타입을 생성하는 함수를 지정한다.
생성자라고 부르는 constructor는 객체가 가질 수 있는 속성들을 정의하기 위해 사용한다.
(청사진의 개념으로 이해하면 쉽다)