객체 지향 프로그래밍은 절차 지향 프로그래밍과 다르게
데이터와 기능을 한 곳에 묶어서 처리
한 객체에는 속성, 메소드가 포함되며class
라고 불리움
코드를 추상화하여 직관적으로 생각할 수 있음
하나의 모델이 되는 청사진
class
를 만들고,
그 청사진을 바탕으로 한 객체instance
를 만듬
OOP는 객체로 그룹화되고,
객체를 만들고 나면 메모리상에서 반환되기 전까지
객체 내의 모든 것이 유지됨
클래스,세부 사항(속성)이 들어가지 않은 청사진 =>
인스턴스, 생성자constructor
로 속성을 추가하여 객체 생성
캡슐화 : 데이터(속성)와 기능(메서드)을 하나의 단위로 묶는 것
느슨한 결합 - 코드 실행 순서가 아닌 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합 - 에 유리, 언제든 구현을 수정할 수 있음, 재사용성을 높임
은닉화, 내부 데이터나 내부 구현이 외부로 노출되지 않음
상속 : 부모 클래스의 특징을 자식 클래스가 물려받는 것 super
extends
추상화 : 내부 구현은 복잡하나 실제 노출은 단순하게 함 - 인터페이스의 단순화
다형성 : 같은 이름을 가진 메서드라도 클래스에 따라 다르게 작동할 수 있음
JavaScript는 프로토타입(원형 객체) 기반 언어
class constructor, protortpe, instance 사이 관계
__proto__
를 이용하면 부모 클래스의 프로토타입, 혹은 '부모의 부모 클래스'의 프로토타입을 탐색할 수 있습니다.