__proto__ 란?

  • 객체에서 __proto__를 통해 프로토타입에 접근 가능
  • 프로토타입은 내부슬롯 [[Prototype]]으로 존재
  • __proto__ : 접근자 프로퍼티로 [[Prototype]]에 접근
    • 접근자 프로퍼티 : 다른 프로퍼티나 내부슬롯을 읽거나 저장할때 사용
  • 사용하는 이유
    • 서로 프로토타입을 참조해서 프로토타입 체인이 꼬여버리는 현상을 방지하기 위해
    • 프로토타입 검색할때 무한 루프에 빠져버리게됨
    • 접근자 프로퍼티 내에서 서로를 참조하는지 체크
  • 직접 사용하는 것은 권장되지 않음
    • Object.getPrototypeOf 사용 : 프로토타입 가져올때
    • Object.setPrototypeOf 사용 : 프로토타입 지정할때
    • 이유 : 모든 객체가 __proto__를 가지고 있지 않음
      • __proto__는 Object.prototype의 접근자 프로퍼티
      • Object.prototype을 상속받지 않을경우 사용 불가능
      • 예시 : null을 상속받아 생성한 객체는 사용 불가

출처

  • 모던 자바스크립트 Deep Dive, Ch 19

+ Recent posts