SEB_FE_45(코드스테이츠)/section 2.

TIL] Unit 2. 객체지향프로그래밍(프로토타입과 클래스)

YTReeee 2023. 5. 11. 23:57

SEB_FE_45

Section 2. Unit 2. 객체지향프로그래밍(프로토타입과 클래스)


프로토타입

자바스크립트의 모든 객체는 자신의 부모 역할을 담당하는 객체와 연결되어 있으며, 객체 지향의 상속 개념과 같이 부모 객체의 속성과 매서드를 상속받아 사용할 수 있다. 이러한 부모 객체를 프로토타입 객체 또는 프로토타입이라 부른다.

프로토타입 기반 객체지향 프로그래밍 언어는 클래스 없이도 객체(인스턴스)를 생성할 수 있다. 자바스크립트는 흔히 프로토타입 기반 객체지향 프로그래밍 언어라 불린다. ES6문법을 통해 클래스 개념이 도입되었다.

프로토타입 체인이란 객체간의 연결을 의미하며, 이를 바탕으로 부모 객체의 속성과 매서드를 상속받아 사용할 수 있게하는 근간이다.

.prototype

함수 객체만 가지고 있는 프로퍼티이며, 함수객체가 생성자로 사용될 때 이 함수를 통해 생성될 객체의 부모 역할을 하는 객체(프로토타입 객체)를 가리킨다.

.__proto__

특정 객체의 프로토타입 객체에 바로 접근하는 공식적인 방법은 없다. 단, 많은 모던 브라우저들이 __proto__속성을 이용하여 특정 객체의 프로토타입 객체에 접근할 수 있도록 구현한다.

즉, 인스턴스 객체의 프로토타입 객체에 접근할 수 있게 해주는 접근자 속성(property)이다.

클래스, 인스턴스, 프로토타입의 관계

(정확한 개념에 대한 이해가 부족한것 같다. 추가적인 공부가 필요함)

클래스 인스턴스 프로토타입
특정 객체를 표현하기 위한 객체의 구조(틀) 클래스 구조에 데이터 값을 입력한 객체 클래스 객체의 구조(속성과 매서드)를 상속받은 객체
객체 내 속성과 매서드를 정의하는 역할 - 속성과 매서드를 지닌 부모 객체
내장 객체(HTML 엘리먼트, JS Object 등)의 속성과 매서드를 상속 프로토타입의 속성과 매서드를 상속 -
프로토타입 객체의 구조(틀) 클래스 객체의 자손 객체 인스턴스의 부모 객체

 

Human 클래스와 인스턴스, 프로토타입의 관계

 

Array(배열) 클래스와 인스턴스, 프로토타입의 관계


출처 : MDN, 코드스테이츠 유어클래스, 모던자바스크립트 Deep Dive, poiemaweb.com