개인적으로 공부하고 이해한 내용이므로, 틀린 부분이 있을 수 있으니 많은 지적 바랍니다 :)

JavaScript의 핵심 객체(Object) 입니다. 객체는 한꺼번에 여러 값을 담을 수 있는 통(container)과 같은 자료구조(data structure)입니다.

JavaScript에서의 객체는 관련된 데이터와 함수(일반적으로 여러 데이터와 함수로 이루어지는데, 객체 안에 있을 때는 보통 프로퍼티와 메소드라고 부릅니다)의 집합입니다.

객체는 Class를 통해 만들 수 있습니다. Class에는 특별한 기능이 있는데, 상속을 통해 부모 클래스에 정의된 데이터와 함수를 고스란히 사용할 수 있습니다. 클래스마다 기능이 달라지는 부분이 있다면, 직접 해당 클래스에 원하는 기능을 정의할 수 있습니다. 이 기능은 매우 유용합니다. 공유하는 많은 공통적인 특징들을 한번만 정의해도 되기 때문입니다.

자바스크립트의 객체(Object) 구성

  1. Built-in Object(자바스크립트 내장객체)
    • Global,Object, String, Number, Boolean, Date, Array, Math, RegExp, Error 등 많은 내장객체들이 있습니다. 이들은 자바스크립트 엔진이 구동되는 시점에서 바로 제공되며 자바스크립트코드 어디에서든 사용이 가능합니다.
  2. Native Object(브라우져 내장 객체)
    • 이 객체들은 Built-in Object 가 구성된후에 구성된다. 이 Native Object역시 내장객체이다. Built-in Object와 동일하게 자바스크립트 구동시점부터 바로 사용가능 하다. 하지만 이들을 굳이 Native Object 라 분류한 이유는 브라우져마다 이 Native Object 를 사용함에 있어서 그 구성을 달리하는 경우가 있기 때문이다.
  3. Host Object(사용자 정의 객체)
    • JavaScript는 객체와 그 기능을 정의하기 위해 생성자 함수라고 불리는 특별한 함수를 사용합니다. 이는 보통 우리가 얼마나 많은 객체들을 생성해야 할지 모르기 때문에 유용합니다.

      생성자함수 예제

그렇다면,
객체지향 프로그래밍의 장점은 무엇일까요?

  1. 코드 재사용이 용이
    • 다른 Class를 가져와서 이용할 수 있고, 상속을 통해 확장해서 사용할 수 있음.
  2. 유지보수
    • 절차 지향 프로그래밍에서는 코드를 수정해야할 때 일일이 찾아 수정해야하는 반면 객체 지향 프로그래밍에서는 수정해야 할 해당 Class에서 해당부분만 수정하면 됨.
  3. 규모가 큰 프로젝트
    • Class 단위로 모듈화 개발이 가능함. 업무분담에도 용이함.

참고