자바스크립트는 객체기반의 프로그래밍 언어

항목 객체기반 (Object-based) 객체지향 (Object-oriented)
정의 객체를 중심으로 프로그래밍하지만 상속, 다형성 등의 일부 OOP 개념을 지원하지 않음 객체, 클래스, 상속, 다형성 등을 지원하는 프로그래밍 패러다임
주요 특징 객체와 그 속성/메서드를 사용, 상속/다형성 미지원 혹은 제한적 클래스 기반, 상속, 다형성, 캡슐화, 추상화 등 지원
언어 예시 JavaScript (ES5 이전) Java, C++, Python 등
장점 - 간단하고 직관적 - 작은 규모의 애플리케이션에 적합 - 빠른 개발 가능 - 재사용성 높음 (상속/다형성) - 유지보수 용이 - 확장성 좋음 - 코드 모듈화 가능
단점 - 상속/다형성 부족 - 유지보수와 확장성에 한계 - 복잡한 시스템에는 불편 - 설계가 복잡하고 처음 배우기 어려움 - 성능 저하 가능성 - 과도한 추상화로 복잡해질 수 있음

자바스크립트를 구성하는 거의 모든 것이 객체다. ⇒ 원시타입을 제외한 나머지 값은 모두 객체

구분 원시타입 (Primitive Type) 객체타입 (Object Type)
저장 방식 값 자체를 저장 값에 대한 참조(reference)를 저장
불변성 불변(immutable) 가변(mutable)
메모리 위치 스택(Stack)에 저장 힙(Heap)에 저장
속성 단일 값만 저장 여러 값(property) 및 메서드를 포함하는 객체 저장
예시 string, number, boolean, Symbol, undefined, null 배열(array), 객체(object), 함수(function), 정규표현식(Regex)

객체지향 언어는 클래스를 사전에 정의하고 필요한 시점에 new 연산자와 함께 생성자를 호출하여 인스턴스 생성하는 방식으로 객체를 생성

자바스크립트프로토타입 기반 객체지향 언어로 다양한 객체 생성 방법을 지원

객체 리터럴(Object Literal)

은 객체의 속성과 값을 중괄호 { } 안에 정의하는 방식입니다.

이는 명시적으로 클래스나 생성자를 사용하지 않고 객체를 간단하게 선언하고 정의할 수 있어

가독성이 좋고 코드가 간결함.