TIL | 객체 object 기초

정세영·2022년 7월 22일
0

Javascript

목록 보기
10/23
post-custom-banner

1. 객체란 무엇일까?

객체는 자바스크립트 데이터 타입 중의 하나이다.
영어로는 object라고 표현한다.

key값과 value값을 쌍으로 이루어져 있고, 배열과는 다르게 순서가 중요하지 않다.

예를 들어 다음과 같은 배열이 있다고 생각해보자

let person1 = ['곽철용', 'AB형', 'ENFP', '바닐라라떼']

위의 배열에는 특정 사람의 이름과 혈액형, MBTI, 좋아하는 커피에 대한 정보가 담겨있다.

우리가 원하는 정보를 얻기 위해서는 해당 배열에 있는 Index number를 기억해야 한다.

또 다른 사람이 있다고 생각해보자.

let person2 = ['아이스아메리카노', 'INTP', '홍혁팔', 'O형']

person2는 person1의 정보와 다른 순서로 값이 뒤섞여 있다.

사람이 두 명일 때는 괜찮지만, 100명이라면 어떻게 될까? 자료를 처리하기 힘들어질것이다.

그래서 나온 개념이 바로 객체이다.


2. 객체의 문법

Array에 데이터 하나하나를 요소라고 표현했다면 Object에서는 property라고 표현한다.

property는 Key와 Value로 이루어져있다.

객체를 생성할 때는 {} 안에 key와 value를 쌍으로 묶어서 만들어준다.

key값이 여러개일 때는 쉽표(,)로 구분해준다.

객체를 만드는 방법은 여러가지인데 그 중에 아래와 같이 중괄호를 이용해 만드는 방식을 Ovject Literal이라고 한다.

let person1 = {
  name: '곽철용',
  bloodType: 'AB형',
  mbti: 'ENFP',
  favoriteCoffee:'바닐라라떼'
}

3. 객체 안의 객체

Array에서도 배열 안에 배열을 만들 수 있었다.

let mySelf = [
  'SeYoung',
  'South Korea',
  'Seoul',
  25,
  ['비비', '들이']
  ]

같은 데이터를 object로 표현해보면

let mySelf = {
  name: 'SeYoung',
  location: {
  	country: 'South Korea',
    city: 'Seoul'
  	},
  age: 25,
  cats: ['비비', '들이']}
  • mySelf라는 객체에는 4개의 preperties가 있다.
  • name 이라는 key에 'SeYoung'이라는 값이 입력되어있다.
  • location이라는 key에는 또 다른 중괄호가 배치되어 있는데 이는 또 다른 객체가 입력되어있다는 뜻이다. 객체 내부에 중첩된 객체가 또 있는 것이다.
  • location 에 배치 된 객체 안에는 country와 city라는 key들을 가지고 있고 각각 'South Korea', 'Seoul' 이라는 데이터들이 배치되어있다.
  • cats라는 key에는 Array가 데이터로 묶여있는데 이런 형태도 가능하다.

그럼 mySelf를 한 번 출력해보자.

[object Object] {
  age: 25,
  cats: ["비비", "들이"],
  location: [object Object] {
    city: "Seoul",
    country: "South Korea"
  },
  name: "SeYoung"
}
  • 오브젝트를 출력했더니 대괄호 안에 object라고 명시되어 있다.
  • 각각의 property들이 나왔는데 여기서 유념해야할 부분은 객체를 작성할 때 넣은 순서대로 출력이 되지 않았다는 점이다.
  • 자바스크립트 내부적으로 object를 저장할 때 property의 순서까지 저장하지 않기 때문이다.
  • 이는 Array와 가장 큰 차이점인데 object는 순서가 없다. 따라서 인덱스도 없다.

그렇다면 인덱스 없이 객체의 각각의 속성에 어떻게 접근 할 수 있을까?

객체로 표현하면 순서가 없기 때문에 index number를 기억하지 않아도 된다.
우리가 원하는 정보의 key값만 알면 정보에 접근할 수 있다!

다음 포스팅에서 이어서 알아보자.

profile
룰루랄라 개발일지🎶❤️‍🔥🧑‍💻❤️‍🔥🎵
post-custom-banner

0개의 댓글