자바스크립트는 객체 기반의 프로그래밍 언어다. 자바스크립트를 이루고 있는 거의 모든 것이 객체다.

객체지향 프로그래밍

여러 개의 독립적 단위, 즉 객체(object)의 집합 으로 프로그램을 표현하는 것 실세계의 실체를 인식하는 철학적 사고를 프로그래밍에 반영한 것

추상화

추상화(abstraction) : 객체의 다양한 속성 중에서 프로그램에 필요한 속성만 간추려 내여 표현하는 것

// person 이라는 객체
// "name(이름)", "address(주소)"라는 속성(property)으로 표현하도록 가정
const person = {
  name: 'WI',
  address: 'Incheon'
}

// circle 이라는 객체
const circle = {
  // 원의 반지름 프로퍼티(상태)
  radius: 5,

  // 원의 지름을 구하는 메서드(행위)
  getDiameter() {
    return 2 * this.radius;
  },

  // 원의 둘레를 구하는 메서드(행위)
  getPerimeter() {
    return 2 * Math.PI * this.radius;
  },

  // 원의 넓이를 구하는 메서드(행위)
  getArea() {
    return Math.PI * this.radius ** 2;
  }
}

상속과 프로토타입

상속(inheritance) : 어떤 객체의 프로퍼티 or 메서드를 다른 객체가 상속받아 그대로 사용할 수 있는 것

다음 예시를 보자.