프로토타입

셀라문·2022년 3월 11일
0

JavaScript

목록 보기
22/27

Java, C++과 같은 클래스 기반 객체지향 프로그래밍 언어와 달리 자바스크립트는 프로토타입 기반 객체지향 프로그래밍 언어이다.

클래스(Class)라는 것을 한 번쯤은 들어보셨을겁니다.
Java, Python, Ruby등 객체지향언어에서 빠질 수 없는 개념이죠.
그런데 중요한 점은 자바스크립트도 객체지향언어라는 것입니다.
이게 왜 중요하냐구요? 자바스크립트에는 클래스라는 개념이 없거든요.
대신 프로토타입(Prototype)이라는 것이 존재합니다.
자바스크립트가 프로토타입 기반 언어라고 불리는 이유이죠.
클래스가 없으니 기본적으로 상속기능도 없습니다.
그래서 보통 프로토타입을 기반으로 상속을 흉내내도록 구현해 사용합니다.
참고로 최근의 ECMA6 표준에서는 Class 문법이 추가되었습니다.
하지만 문법이 추가되었다는 것이지, 자바스크립트가 클래스 기반으로 바뀌었다는 것은 아닙니다.

constructor (생성자)

__proto__ (던더프로토)

__proto__의 사용은 논란의 여지가 있으며 권장하지 않습니다.
원래는 ECMAScript 언어 사양에 포함되지 않았음에도 불구하고 최신 브라우저에서는 이를 구현했습니다.
최근에서야 ECMAScript 2015 사양에서 웹 브라우저와의 호환성을 위해 표준화되었으므로 향후에도 지원은 될 것입니다.
그러나 __proto__는 더이상 사용하지 않길 바라며, 대신 Object.getPrototypeOf / Reflect.getPrototypeOf 및 Object.setPrototypeOf / Reflect.setPrototypeOf를 권장합니다.

프로토타입 체인

프로토타입 확장 (extends, 상속)

profile
취미로 하는 공부기록장

0개의 댓글