[TIL] 2022.04.12

Minsu Han·2022년 4월 12일
0

TODAY I LEARNED

목록 보기
33/46

오늘 한 일

  • 모던 자바스크립트 Deep Dive
  1. 프로토타입

배운 것

  • 생성자 함수로서 호출할 수 있는 함수(=constructor)는 함수 정의가 평가되어 함수 객체를 생성하는 시점에. 프로토타입도 더불어 생성된다
  • 따라서 객체가 생성되기 이전에 생성자 함수와 프로토타입은 이미 객체화되어 존재한다. 이후 생성자 함수 또는 리터럴 표기법으로 객체를 생성하면 프로토타입은 생성된 객체의 [[Prototype]] 내부 슬롯에 할당된다. 이로써 생성된 객체는 프로토타입을 상속받는다
  • 객체 생성 방식에 따른 프로토타입의 결정
    객체 리터럴 / Object 생성자 함수에 의해 생성된 객체의 프로토타입: Object.prototype
    생성자 함수에 의해 생성된 객체의 프로토타입: 생성자 함수의 prototype 프로퍼티에 바인딩되어 있는 객체
  • 프로토타입 체인: 자바스크립트는 객체의 프로퍼티에 접근하려고 할 때 해당 객체에 접근하려는 프로퍼티가 없다면 [[Prototype]] 내부 슬롯의 참조를 따라 자신의 부모 역할을 하는 프로토타입의 프로퍼티를 순차적으로 검색함 -> 객체지향 프로그래밍의 상속을 구현
  • 프로토타입 체인은 상속과 프로퍼티 검색을 위한 매커니즘
    스코프 체인은 식별자 검색을 위한 매커니즘
  • 프로토타입이 소유하는 프로토타입 프로퍼티, 인스턴스가 소유하는 인스턴스 프로퍼티
  • 프로퍼티 shadowing
  • 하위 객체를 통해 프로토타입의 프로퍼티를 변경/삭제할 수 없다
profile
기록하기

0개의 댓글