JavaScript의 객체 타입

2019. 9. 5. 17:47

자료형의 구분

자료형은 크게 원시 타입(primitive type)참조 타입(reference type)으로 구분됩니다. 이 두가지 타입은 데이터가 메모리에 저장되는 방식에서 차이가 발생합니다.

변수에 A라는 값을 저장한다고 가정할 때, 원시 타입의 경우 메모리 공간 안에 A를 그대로 복사해서 저장합니다. 참조 타입은 A의 참조(=A라는 값을 가지고있는 메모리의 주소)를 저장합니다.

  • 원시 타입 : number, string, boolean 등
  • 참조 타입 : 배열, 객체, 함수 등

 

'참조'라는 표현이 다소 어색하게 느껴질 수 있는데요, 참조는 단어 자체의 사전적 정의로 이해하는 것보다 '가리키다'라는 단어로 바꿔서 생각하면 더 쉽게 받아들일 수 있습니다.

값을 직접 보관하는 것과 참조하는 것의 차이를 그림으로 나타내면 아래와 같습니다.

 

이 그림에서 gender는 female이라는 값을 참조하고 있습니다. city는 경기도라는 값을 참조하고 있습니다.

객체

객체는 여러개의 속성(property)과 메서드(method)를 하나의 변수에 저장할 수 있게 해주는 자료형으로, keyvalue로 구성됩니다.

사람을 표현하는 객체를 하나 만든다고 가정해봅시다. 사람은 이름, 나이, 성별 등의 속성을 가지고 있습니다.

var person = {
    'name': '김철수',
    'age': 23,
    'gender': 'male'
};

이 경우 김철수는 속성의 value가 되고, name은 속성의 key가 됩니다.

값으로 number, string 등 데이터가 할당된다면 프로퍼티, 함수를 할당한다면 메서드가 됩니다.

 

위의 예시만 보면 객체라는 타입을 굳이 왜 사용하는 건지 이해가 잘 안될 수 있습니다.

person이라는 객체의 속성을 모두 원시 타입 변수로 하나하나 풀어서 나열해 보겠습니다.

var name = '김철수';
var age = 23;
var gender = 'male';

var name2 = '김영희';
var age2 = 29;
var gender2 = 'female';
...

위와같이 작성할 경우 name, age, gender라는 세 개의 변수가 하나의 대상을 표현하는 값이라는 사실을 이해하기가 어렵습니다. 만약 사람이라는 객체를 1만개 생성해야하는 상황이라면, 데이터를 관리하는데 있어 객체를 사용하는 것이 훨씬 편리할 것입니다.

객체의 속성을 사용하는 방법은 두가지가 있습니다. 하나는 .을 사용하는 것이고, 다른 하나는 []를 사용하는 것입니다.

{객체 이름}.{속성 이름}
{객체 이름}['{속성 이름}']

person 객체에 적용하면 아래처럼 됩니다.

person.name // 김철수
person['age'] // 23

 

참고 링크