본문 바로가기

programming study/JavaScript

19장 프로토 타입(2)

본 내용은 모던 자바스크립트 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