Object
객체의 특정 키의 값을 가져오는 것도 가능하지만, 반대로 객체에 특정 키를 만들고 값을 할당하는 것도 가능하다.
information이라는 객체 하나를 만든다.
여기에 키 하나를 생성하고, 그 키에 값을 할당해주려고 한다.
그런데 키와 값을 변수를 통해 받아온다면 어떻게 해야할까?
verb의 값을 키로 사용해야 하고, project의 값을 그 키의 값으로 사용한다고 했을때
A와 같이 할당이 가능하다.
B의 방식으로도 할당이 가능할 수도 있겠지만, 이 경우 키와 값은 항상 정해져있게 된다.
하지만 A와 같은 방법은 변수 Verb와 project가 가지는 값에 따라 다른 키와 다른 값을 가지는게 가능해진다.
.
배열을 순회할때 다음과 같은 for문을 사용했었다.
이런 반복문은 배열이 length라는 키를 갖고 있고, 인덱스를 통해 각 배열 요소에 접근할 수 있었기 때문.
객체는 length키가 따로 주어져 있지 않고, 인덱스도 없기 때문에 이런식의 반복문은 불가능하다.
대신 크게 두가지의 방법으로 객체의 반복문 작성이 가능하다.
1.Object.keys()
Object.keys 메소드는 어떤 객체가 가지고 있는 키들의 목록을 배열로 리턴하는 메소드이다. 객체의 내장 메소드가 아니라 객체 생성자인 Object가 직접 가지고 있는 메소드이다.
아래 사용법을 보면,
세로운 ES6 문법에서는 Object.keys외에도 마찬가지로 Object 생성자의 메소드인 Object.Values, Object.entries 와 같은 자매품들이 추가되었다.
Object.values는 객체의 키가 아닌 값으로 이루어진 배열을 리턴.
Object.entries는 객체의 키와 값의 쌍으로 이루어진 길이 2짜리 배열로 이루어진 배열을 리턴.
각 배열에서 인덱스 [0]의 값은 각각의 키를, 인덱스 [1]의 값은 해당키에 해당하는 값을 가지게 된다.
for-in반복문은 객체 순회 외에도, 일반적인 배열을 순회할때도 아주 유용!!
위와 같이 객체를 가지고 for-in문을 사용하며ㄴ, for-in문의 인덱스에 해당하는 변수가, 숫자가 아닌 객체의 각각의 키에 해당하는 문자열을 할당받게 된다.