OOP는 객체 지향적 프로그래밍을 말한다.
이는 데이터가 객체 내에 캡슐화되고, 구성 요소 부분이 아닌 객체 자체가 운용되는 프로그래밍 방식이다.
캡슐화
데이터와 기능을 하나로 묶는다.
동작만 노출시키고 정보를 은닉할 수 있고, 언제든 그 기능을 수정할 수 있다.
상속
기본 클래스의 특징을 파생 클래스가 상속받는다.
추상화
불필요한 정보는 숨기고 중요한 정보만을 표현해서 프로그램을 간단히 만든다.
ex)전화기를 사용할 때 복잡한 내부 구조는 보여지지 않는다.
다형성
같은 메소드라도 다른 방식으로 구현할 수 있다.
ex)
JS에서 원시타입을 제외한 모든 것은 객체(Object)이다. (따라서 모든 function(객체)에는 prototype이 있다)
객체는 자신을 만들 때 사용된 원형인 프로토타입 객체를 이용하여 객체를 만든다.
(모든 객체는 object를 상속받기에 object.proto에 달린 메소드들을 사용할 수 있다.)
이를 통해 상속의 개념을 구현할 수 있기에 사용해야 하는 것이다. (부모의 프로토타입은 자식의 프로토이다.)