02_Part_OOP in JavaScript

Hanbin Lee·2021년 4월 10일
0

codestates

목록 보기
1/7

오늘은 OOP에 대해 공부를 했다.
그래서 공부한 내용을 토대로 두가지 질문에 대해 정리하는 시간을 가지려 한다.

  • OOP(Object Oriented Programming)가 무엇인지?
  • JavaScript에서 Prototype은 무엇이고 왜 사용해야 하는지?

먼저, OOP란?

Object Oriented Programming의 약자로, 객체 지향 프로그래밍이라고 한다.
OOP는 프로그래밍의 패러다임 중 하나인데, 변수와 함수를 순자적으로 프로그래밍을 하던 방식에서, 객체를 사용하여 객체 단위로 묶어, 각각의 객체안에 있는 데이터의 접근과 처리를 효율적으로 처리할 수 있게 하는 방식이다.
OOP에는 Encapsulation(캡슐화), Abstraction(추상화), Inheritance(상속), Polymorphism(다향성) 이렇게 4가지의 기본적인 컨셉으로 되어있다.

캡슐화는 속성과 기능을 객체 단위로 묶는 것을 말하는데, 은닉화의 특징이 포함돼어 있어, 내부 데이터와 동작이 외부로 노출되지 않게 해야한다.
추상화는 내부 구현은 매우 복잡하지만 외부에 노출되는 부분은 단순하게 만든다는 개념이다.
상속은 말그대로 부모클래스의 특징을 자식클래스도 가지고 있다는 개념이다.
다향성은 동일한 메소드를 조건문으로 나누지 않고 객체의 특성에 맞게 사용할 수 있는 개념이다.

OOP를 사용하면 다소 복잡하고 반복적인 코드를 객체 단위로 묶어 보다 간편하고 가독성이 좋은 프로그래밍이 가능하다. 그러나 지나친 객체화 된 프로그래밍은 본질을 그대로 표현하는 것에 방해 요소가 될 수 있으니 유의해야한다.

JavaScript의 Prototype

JavaScript프로토타입 기반 언어(prototype-based language)라 불리는데, 모든 객체들이 메소드와 속성들을 상속 받기 위한 템플릿으로써 프로토타입 객체(prototype object)를 가진다는 의미이기도 하다.
여기서 prototype은 해당 객체의 기본이 되는 원형을 뜻한다.

function PrototypeObject() {}
PrototypeObject.prototype;
//{constructor: ƒ}
//  constructor: ƒ PrototypeObject()
//  __proto__: Object

PrototypeObject.prototype 속성을 보면 생성자 함수와 어떤 프로토타입 객체를 상속받고 있는지 확인 할 수 있다.

프로토타입 객체의 상위 프로토타입 객체는 계속해서 프로토타입 객체에 상속 할 수 있는데 이를 프로토타입 체인(prototype chain)이라 부른다.
프로토타입 객체를 상속 받기 위해서는 prototype속성을 사용해서 상속받을 프로토타입 객체를 지정 할 수 있다.

profile
안녕하세요 백엔드 개발자 이한빈 입니다 :)

0개의 댓글