출처: 모던 자바스크립트 딥다이브

프로토타입


JS는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어이다.

public, private, protected 등이 없어서 자바스크립트는 객체지향 언어가 아니라고 오해 하는 경우도 있지만, JS는 클래스 기반 객체지향 프로그래밍 언어보다 효율적이며 더 강력한 객체지향 프로그래밍 능력을 가지고 있는 프로토타입 기반의 객체지향 프로그래밍 언어다.

클래스: ES6에서 클래스가 도입되었다. ES6 클래스가 기존의 프로토타입 기반 객체지향 모델을 폐지하고 새로운 객체지향 모델을 제공하는 것은 아니다. 기존 프로토타입 기반 패턴의 문법적 설탕 이라 볼 수 도 있다. 클래스와 생성자 함수는 모두 프로토타입 기반의 인스턴스를 생성하지만 정확히 동일하게 동작하지는 않는다. 클래스는 생성자함수 보다 엄격하며 생성자 함수에서 제공하지 않는 기능도 제공한다.

JS는 객체 기반의 프로그래밍 언어이며 JS를 이루고 있는 거의 “모든 것”이 객체다.

객체 지향


객체지향 프로그래밍은 프로그램을 명령어 또는 함수의 목록으로 보는 전통적인 명령형 프로그래밍의 절차지향적 관점에서 벗어나 여러 개의 독립적인 단위, 객체의 집합으로 프로그래미을 표현하려는 프로그래밍 패러다임을 말한다.

객체지향 프로그래밍은 실세계의 사물이나 개념을 프로그래밍에 접목하려는 시도에서 시작 되었다.