배열과 같지만 색인(index)을 지정할 수 있다는 점이 다르다.
배열은 자동으로 중복되지 않는 숫자를 지정했다면
객채는 색인(index)을 문자열로도 지정할 수 있다.
배열과 객채의 다른점이 한가지 더 존재하는데,
배열은 저장된 데이터들이 순서를 가지고 있다.
객채의 작성 방식은 다음과 같다.
let grades = {'pangho': 10, 'ppapangho': 6, 'panoghooo': 80};
중괄호안에 있는 것들을 객채(object)라고 하며
이 중괄호를 grades
라는 변수로 지정한 상태이다.
여기서 pangho
는 색인(index)에 해당하며 10
은 원소(element)이다
하지만 객체에서는 index를 key라고 부르며 element를 value라고 부른다.
이렇게 작성하는 방법 외에도 다른 방법으로도 작성 할 수 있다.
let grades = {};
grades['pangho'] = 10;
grades['ppapangho'] = 6;
grades['panoghooo'] = 80;
let grades = new Object();
grades['pangho'] = 10;
grades['ppapangho'] = 6;
grades['panoghooo'] = 80;
반복문 for에는 배열이나 객채를 담아 반복 작업을 실행시킬 수 있다.
작성 방법은 아래와 같다.
let grades = {'pangho': 10, 'ppapangho': 6, 'panghooo': 80};
for(name in grades) {
document.write("key : "+name+" value : "+grades[key]+"<br />");
}
for문은 in 뒤에 따라오는 객채(grades)의 key값을
in 앞의 변수(예시의 변수 이름은 name)에 담아서 반복문을 실행한다.
반복문은 객체의 key값 개수만큼 작동한다.
즉 for (var in [], {})은 반복문 중 변수를 만들고
만들어져 있던 배열 또는 객채를 for에서 만든 변수에 넣고
반복문을 실행하는 것이다.
객채와 연관지어 사용할 수 있는 요소들을
객채로 묶어 프로그래밍하는 스타일이다.
이런 방식은 객채 안에 또다른 객채, 함수 등을 사용할 수 있기 때문에
이런 프로그래밍 스타일이 탄생한 것이다.
객채 안에 또다른 객채를 사용하는 방법은 다음과 같다.
let grades = {
'list': {'egoing': 10, 'k8805': 6, 'sorialgi': 80},
'show' : function(){
for(var name in this.list){
document.write(name+':'+this.list[name]+"<br />");
}
}
};
grades.show();
/* 작동 원리는 이렇다. 객채인 grades.show();를 사용하면
grades객채 안에 함수를 불러오고 이 함수는 반복문을 불러오고
이때 반복문에 변수(name)를 사용해 객채(list)에서 값을 얻어 데이터를 작성한다. */
객채 grades를 변수로 지정하여 grades안에는 list라는 객채와 show라는 함수를
함께 담고 있는 모습이다. 그러면서도 show안에는 반복문이 들어 있는 것을 알 수 있다.