[TIL] 20220914

yes·2022년 9월 15일
0

TIL 💌

목록 보기
20/55
  • 자바스크립트 딥 다이브 프로토타입 공부 (19.1 ~ 19.7)

프로토타입

다양한 속성 중에서 프로그래밍에 필요한 속성만 간추려 내어 표현하는 것을 추상화라 한다.

자바스크립트는 프로토타입을 기반으로 상속을 구현하여 불필요한 중복을 제거한다.

객체 생성 방식

  • 객체 리터럴 방식 : 하나의 변수에만 필요한 속성들을 정의할 때
  • 생성자 함수 방식 : 둘 이상의 변수에서 같은 속성들을 정의할 때
    • 프로토 타입 : 둘 이상의 변수에서 동일한 행위를 하는 같은 메소드들 같은 것들이 필요할 때

불필요한 중복을 생각하자!

함수 객체의 prototype 프로퍼티

함수 객체만이 소유하는 prototype 프로퍼티는 생성자 함수가 생성할 인스턴스의 프로토타입을 가리킨다.

구분소유사용 주체사용 목적
proto 접근자 프로퍼티모든 객체프로토타입의 참조모든 객체객체가 자신의 프로토타입에 접근 또는 교체하기 위해 사용
prototype 프로퍼티constructor프로토타입의 참조생성자 함수생성자 함수가 자신이 생성할 객체(인스턴스)의 프로토타입을 할당하기 위해 사용

프로토타입의 생성 시점

프로토타입은 생성자 함수가 생성되는 시점에 더불어 생성된다.

프로토타입과 생성자 함수는 단독으로 존재할 수 없고 언제나 쌍으로 존재한다.

생성된 프로토타입은 오직 constructor 프로퍼티만을 갖는 객체다. 프로토타입도 객체이고 모든 객체는 프로토타입을 가지므로 프로토타입도 자신의 프로토타입을 갖는다. 생성된 프로토타입의 프로토타입은 Object.prototype이다.

빌트인 생성자 함수 : Object, String, Number, Function, Array, RegExp, Date, Promise 등과 같은 것들

프로토타입 또한 객체다.

프로토타입 체인

자바스크립트는 객체의 프로퍼티(메서드 포함)에 접근하려고 할 때 해당 객체에 접근하려는 프로퍼티가 없다면 [[Prototype]] 내부 슬롯의 참조를 따라 자신의 부모 역할을 하는 프로토타입의 프로퍼티를 순차적으로 검색한다. 이를 프로토타입 체인이라 한다. 프로토타입 체인은 자바스크립트가 객체지향 프로그래밍의 상속을 구현하는 메커니즘이다.

Object.prototype 을 프로토타입의 종점이라 한다.

프로토타입 체인은 상속과 프로퍼티 검색을 위한 메커니즘이라고 할 수 있다.

스코프 체인은 식별자 검색을 위한 메커니즘이라고 할 수 있다.

스코프 체인과 프로토타입 체인은 서로 연관없이 별도로 동작하는 것이 아니라 서로 협력하여 식별자와 프로퍼티를 검색하는 데 사용된다.


TMI

오늘 운전면허 필기 합격했다~

자바스크립트 딥 다이브 3번 정도 읽으니까 드디어 너란 녀석이랑 엄청 가까워지는 중

0개의 댓글