프로토타임 : 어떤 객체의 상위 객체 역할을 하는 객체로 하위 객체에게 자신의 프로퍼티와 메소드를 상속한다.
(js는 프로토타입을 기반으로 상속을 구현)
Prototype : 프로토타입 객체로 하위객체에서 자신의 프로퍼티와 메소드를 상속
prototype 프로퍼티 : 생성자 함수의 인스턴스 프로토타입을 가르키는 것
- 함수 객체가 가지고 있음 (생성자함수로 만들어 지지 않은 화살표함수, 축약메소드는 없다)
- 생성자 함수가 인스턴스의 프로토타입을 할당하기 위해 사용 (생성자함수가 가능한 객체가 소유하는 프로퍼티)
- constructor 만이 소유하는 프로퍼티
[[Prototye]] : 프로토타입 객체를 가르키는 내부slot, 모든 객체가 가진 내부slot으로 프로토타입 객체를 가리킨다.
proto는 프로토타입 객체에 접근하기 위해 사용하는 접근자 프로퍼티
__proto__ : 프로토타입에 접근하기 위한 접근자 프로퍼티 [[Prototype]] 내부 slot에 간접적으로 접근,
Object.prototype의 접근자 프로퍼티 모든 객체는 proto를 통해 자신의 프로토타입에 접근 가능하다.
Object.prototype :
모든 객체는 프로토타입 체인에 묶여있는데 js엔진은 객체의 프로퍼티에 접근할 때 해당 값이 없으면 __proto__ 접근자 프로퍼티가 가리키는 참조를 따라 자신의 부보 역할을 하는 객체의 프로토타입을 탐색함
프로토타입 객체
- 모든 객체가 가진 것
- 하위 객체에게 사위 객체의 공유 프로퍼티(메소드) 공유
- 상속의 개념을 구현
프로토타입 체인 : 객체의 프로퍼티나 메소드에 접근할 때 없으면 프로토타입 체인을 따라 프로토타입의 프로퍼티와 메소
드를 차례로 검색하게 됨. (JS엔진이 객체의 프로퍼티를 찾을때 해당 객체에 찾는 프로퍼티가 없으면,
접근자 proto를 따라서 부모의 프로토타입의 프로퍼티를 순차적으로 검색하는 구조)
출처 : https://rrecoder.tistory.com/176?category=947948