[모던 자바스크립트 딥다이브] 19장 프로토타입

Soyeon·2025년 3월 20일
1

자바스크립트는 객체 기반의 프로그래밍 언어다.

  • 원시 타입을 제외한 나머지 값은 모두 객체다
  • 자바스크립트만의 프로토타입 기반의 객체 지향 프로그래밍이 존재한다.

객체 지향 프로그래밍

여러 개의 독립적 단위, 즉 객체의 집합으로 프로그램으로 표현하는 것

  • 실체는 특징이나 성질을 나타내는 속성을 가진다. 이를 통해 실체를 인식하거나 구별한다.
  • 상태 + 동작을 하나의 논리적인 단위로 묶은 자료구조

추상화

객체의 다양한 속성 중에서 프로그램에 필요한 속성만 간추려 내어 표현하는 것


상속과 프로토타입

자바스크립트는 프로토타입을 기반으로 상속을 구현해서 불필요한 중복을 제거한다. 즉, 코드를 재사용한다.

상속

어떤 객체의 프로퍼티 or 메서드를 다른 객체가 상속받아 그대로 사용할 수 있는 것

프로토타입

자바스트립트는 프로토타입을 기반으로 상속을 구현한다.


프로토타입 객체

__proto__ 접근자 프로퍼티

모든 객체는 __proto__ 접근자 프로퍼티를 통해 자신의 프로토타입, 즉 [[Prototype]] 내부 슬롯에 간접적으로 접근할 수 있다.

  • 원래 내부 슬롯과 내부 메서드는 직접적으로 접근 가능하지 않다.
  • 다만, 일부 내부 슬롯과 내부 메서드에 한하여, 간접적으로 접근할 수 있는 수단을 제공한다.
    • __proto__ 는 접근자 프로퍼티이며, [[Prototype]] 내부 슬롯의 값, 즉 프로토타입에 접근할 수 있다.

함수 객체의 prototype 프로퍼티

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

  • 생성자 함수로서 호출할 수 없는 non-constructor 인 화살표 함수는 prototype 프로퍼티를 소유하지 않고, 프로토타입도 생성하지 않는다.
profile
탄탄한 개발자로 살아남기🗿

0개의 댓글