객체란?

자바 스크립트는 객체 기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 거의 모든 것이 객체다.

원시 타입은 단 하나의 값만 나타내지만 객체 타입 (reference type)은 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조다.

원시 타입의 값은 변경 불가능한 값 (immutable value)지만, 객체 타입의 값은 변경 가능한 값 (mutable value)다.

객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 key와 value로 구성된다.

프로퍼티 값이 함수일 경우 일반 함수와 구분하기 위해 메서드라 부른다.

객체 리터럴에 의한 객체 생성

인스턴스란 클래스에 의해 행성되어 메모리에 저장된 실체를 의미한다. 객체지향 프로그래밍에서 객체는 클래스와 인스턴스를 포함한 개념이다. 클래스는 인스턴스를 생성하기 위한 템플릿의 역할을 하며, 인스턴스는 객체가 메모리에 저장되어 실제로 존재하는 것에 초점을 맞춘 용어다.

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

가장 일반적이고 간단한 방법은 객체 리터럴을 사용하는 방법이다.

var person = {
	name: 'mos',
	sayHoeel: function () {
		console.log(`hello ${this.name}`);
	}
};

console.log(typeof person); // object
console.log(person); // {name: "mos", sayHello: f}