
자바스크립트는 명령형, 함수형, 프로토타입 기반 *객체지향 프로그래밍 을 지원하는 멀티 패러다임 프로그래밍 언어이다.
*객체지향 프로그래밍: 객체의 상태를 나타내는 데이터(프로퍼티)와 상태 데이터를 조작할 수 있는 동작(메소드)을 하나의 논리적인 단위로 묶어 생각한다.
즉, 객체는 상태 데이터와 동작을 하나의 논리적인 단위로 묶은 복합적인 자료구조라 할 수 있다.
상속이란 어떤 객체의 프로퍼티 또는 메소드를 다른 객체가 상속받아 그대로 사용할 수 있는 것을 말하는데, 자바스크립트는 프로토타입을 기반으로 상속을 구현하여 불필요한 중복을 제거한다.

모든 객체는 [ [Prototype] ] 이라는 내부 슬롯을 가지며, 이 내부 슬롯의 값은 프로토타입의 참조(null인 경우도 있음)다.
객체와 프로토타입과 생성자 함수는 아래와 같이 서로 연결되어 있다.

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