객체 지향 프로그래밍은, 절차 지향 프로그래밍과는 다르게 데이터와 기능을 한곳에 묶어서 처리합니다. 속성과 메서드가 하나의 "객체"라는 개념에 포함되며, 이는 JavaScript 내장 타입인 object(이하, object literal)와는 다르게, 클래스(Class)라는 이름으로 부릅니다.
프로그래밍 패러다임은 뭐죠? → 그 시대에 좋다고 인정된 개발하는 방식
자바스크립트의 객체지향 언어는 프로토타입을 기반으로 한다.
Javascript === multi-paragm Language → 다된다.

객체 지향 프로그래밍의 기초가 되는 용어부터 설명합니다.
객체 지향 프로그래밍은 하나의 모델이 되는 청사진(blueprint)을 만들고, 그 청사진을 바탕으로 한 객체를 만드는 프로그래밍 패턴입니다.
사람친화적 프로그래밍
사실, 이미 자바스크립트에는 "객체"라는 개념이 객체 지향 프로그래밍과 무관하게 이미 존재하죠. 따라서 여기서는 용어를 잘 구분하는 것이 중요합니다.
앞으로, 그냥 객체가 아닌 "청사진"을 바탕으로 한 객체는 인스턴스 객체(instance object), 줄여서 인스턴스(instance)라고 부르겠습니다. 청사진은 클래스(class)라고 부릅니다.
객체를 어떤 식으로 만드는지 살펴보면, 그냥 일반적인 함수를 정의하듯 만듭니다.
이때 함수를 이용하는 방법이 조금 다릅니다. 그냥 실행하는 것이 아니고 new 키워드를 써서 만듭니다. 이는 새로운 인스턴스를 만드는 방법입니다.
일반적인 다른 함수와 구분하기 위해 클래스는 보통 대문자로 시작하며 일반명사로 만듭니다.
일반적인 함수는 적절한 동사를 포함하고 소문자로 시작합니다.
By Codestates
그리고 클래스를 만드는 새로운 문법이 ES6(ECMAScript 6, 비교적 최근 자바스크립트 문법입니다)에 도입되었습니다. 바로 class 키워드입니다.
최근에는 ES6 방법을 주로 사용합니다.
여기서 보이는 함수는, 객체지향 프로그래밍에서 생성자(constructor) 함수라고 부릅니다. 인스턴스가 만들어질 때 실행되는 코드입니다.
참고로 생성자 함수는 return 값을 만들지 않습니다.
인스턴스를 만들 때에는 new 키워드를 사용합니다. 즉시 생성자 함수가 실행되며, 변수에 클래스의 설계를 가진 새로운 객체, 즉 인스턴스가 할당됩니다.
각각의 인스턴스는 클래스의 고유한 속성과 메서드를 갖게 됩니다.
this라는 새로운 키워드가 등장합니다. 객체지향 프로그래밍에서는 빠지지 않고 등장하므로 간단하게 알아둡시다.

이 그림을 눈에 담아두고, 외워주세요. 용어를 알아두어야, 이후 설명을 들을 때에 뭐가 뭔지 헷갈리지 않게 됩니다.
이 그림에서는 ES5 방식을 보여주고 있지만, ES6 방식이 더욱 많이 쓰이기에, 위에 안내한 코드를 ES6로 반드시 직접 작성해 보세요. (오히려 더욱 쉽습니다!)
