지금까지 살펴본 배열은 아이템에 대한 식별자로 숫자를 사용했다. 데이터가 추가되면 배열 전체에서 중복되지 않는 인덱스가 자동으로 만들어져서 추가된 데이터에 대한 식별자가 된다. 이 인덱스를 이용해서 데이터를 가져오게 되는 것이다. 만약 인덱스로 문자를 사용하고 싶다면 객체(dictionary)를 사용해야 한다. 다른 언어에서는 연관배열(associative array) 또는 맵( map), 딕셔너리(Dictionary)라는 데이터 타입이 객체에 해당한다.
var grades = {'Alice':10,'Bob':6,'Chris':80};//Alice, Bob, Chris가 index가 된다.
객체를 만드는 다른 방법
var grades =newObject();grades['Alice'] =10;grades['Bob'] =6;grades['Chris'] =80;
객체의 값을 가져오기
Object['index name']
Oject.'index name'
객체(Object)의 index에 해당하는 것을 'key'라고 하고, data에 해당하는 것을 'value'라고 한다.
반복문을 이용하여 key와 value를 확인할 수 있다.
var grades = {'Alice01':10,'Bob':6,'Chris':80};for(var name in grades) {document.write("<li>key :"+name+" value :"+grades[key]+"</li>");}
배열에도 적용할 수 있다.
var arr = {'aa','bb','cc'};for(var name in grades) {console.log(name);//index가 출력된다. 0,1,2}for(var name in grades) {console.log(arr[name]);//data가 출력된다. aa,bb,cc}
객체 지향 프로그래밍(Object-oriented Programming)
객체에는 객체를 담을 수도 있고, 함수도 담을 수 있다.
객체지향프로그래밍은 연관되어있는 데이터와, 그와 연관된 처리를 하는 것이다. .
var grades = {'list': {'egoing':10,'k8805':6,'sorialgi':80},'show':function() {for(var name inthis.list) {document.write(name+':'+this.list[name]+"<br/>"); } }}//객체의 함수 호출방법grades['show']();grades.show();