프로토타입이란 무엇인가요?
프로토타입이란?
자바스크립트는 프로토타입을 기반으로 상속을 구현하는 언어이다. 프로토타입은 엄밀히 말하면 프로토타입 객체이다.
프로토타입 객체는 어떤 객체의 상위(부모) 객체의 역할을 한다.
프로토타입을 왜 사용하나요?
객체 간 상속을 구현하기 위해 사용한다. 즉, 프로토타입을 상속 받은 하위(자식) 객체는 상위(부모) 객체의 프로퍼티를 자신의 프로퍼티처럼 자유롭게 사용할 수 있다.
프로토타입이 어떻게 동작하나요?
프로토타입은 객체 생성 방식에 따라 객체가 생성될 때 결정되고 해당 객체의 [[Prototype]] 내부 슬롯에 저장된다.
__proto__접근자 프로퍼티를 통해서 프로토타입에 간접적으로 접근이 가능하다.
- 생성자 함수가 생성한 객체 : __proto__접근자 프로퍼티로 자신의 프로토타입에 간접적 접근 가능
- 프로토타입 : 자신의 constructor 프로퍼티로 생성자 함수에 접근 가능
- 생성자 함수 : 자신의 prototype 프로퍼티로 프로토타입에 접근 가능
사실 모든 객체는 __proto__접근자 프로퍼티를 가지고 있다. 그러므로 모든 객체는 __proto__접근자 프로퍼티로 자신의 프로토타입 객체에 간접적으로 접근할 수 있다.
프로토타입 체인이란?
자바스크립트의 모든 객체는 프로토타입 기반 상속을 받고 있다. 자바스크립트는 객체의 프로퍼티에 접근할 때 해당 객체에 접근하려는 프로퍼티가 없다면, [[Prototype]] 내부슬롯의 참조를 따라 자신의 부모 역할을 하는 프로토타입의 프로퍼티를 순차적으로 검색한다.
이를 프로토타입 체인이라고 한다.