본 내용은 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 토대로 작성하였습니다.
19.3 프로토타입 객체
- 객체간 상속을 구현하기 위해 사용
- 어떤 객체의 상위(부모) 역할을 하는 객체
- 공유 프로퍼티, 메서드를 가지고 있음
- [[Prototype]]
- 모든 객체가 가지는 내부 슬롯
- 프로토타입의 참조
- 객체 생성 방식에 따라 프로토 타입이 결정되고 내부 슬롯에 저장 됨
- 모든 객체는 하나의 프로토타입을 가짐
19.3.1 접근자 프로퍼티
- __proto__ 접근자 프로퍼티를 통해 [[Prototype]] 내부 슬롯에 간접적으로 접근 가능
- 접근자 프로퍼티 : 자체적인 값을 갖지 않고 다른 데이터 프로퍼티 값을 읽고 저장하는 데 사용하는 프로퍼티
- getter/setter
- 접근 시에는 getter가 호출
- 할당 시에는 setter가 호출
- 객체가 직접 소유하는 것이 아닌, Object.prototype의 프로퍼티
- 모든 객체는 상속을 통해 Object.prototpye.__prototype__ 사용 가능
- Object.prototype는 모든 객체의 프로토타입 객체
- 상호 참조에 의해 프로토타입 체인이 생성되는 것을 방지하기 위해 사용(무한 루프 방지)
- 프로토타입은 단방향 링크드 리스트로 구현되어야 함
- 코드 내에서 직접 사용하는 것은 권장되지 않음
- 모든 객체가 상속받을 수 있는 것은 아니기 때문(직접 상속)
- Object.getPropertyOf 메서드를 사용할 것(getter)
- 프로토타입 교체시에는 Object.setProtpertyOf 메서드를 사용(setter)
19.3.2 함수 객체의 prototype 프로퍼티
- 함수 객체만이 가지는 프로퍼티
- 생성자 함수가 생성할 인스턴스의 프로토타입을 가리킴
- non-constructor인 함수들은 prototype 프로퍼티를 소유하지 않음
- 화살표 함수
- ES6 메서드 축약 표현
'programming study > JavaScript' 카테고리의 다른 글
19장 프로토 타입(4) (0) | 2022.03.11 |
---|---|
19장 프로토 타입(3) (0) | 2022.03.10 |
19장 프로토 타입(1) (0) | 2022.03.06 |
18장 - 함수와 일급 객체 (0) | 2022.03.04 |
17장 - 생성자 함수에 의한 객체 생성(2) (0) | 2022.03.03 |