본문으로 바로가기


1.객체의 소개와 문법

배열은 아이템에 대한 식별자로 숫자를 사용했다. 데이터가 추가되면 배열 전체에서 중복되지 않는 인덱스가 자동으로 만들어져서 

추가된 데이터에 대한 식별자가 된다. 이 인덱스를 이용해서 데이터를 가져오게 되는 것이다. 만약 인덱스로 문자를 사용하고 싶다면 

객체(dictionary)를 사용해야 한다. 다른 언어에서는 연관배열(associative array) 또는 맵( map), 딕셔너리(Dictionary)라는 데이터 타입이 객체에 해당한다.

( 객체= 연관 되어 있는 그릇을 말한다 배열과 유사한 역할 을 한다 )  

하지만 배열 과의 차의 점이 있다 위에서 말한것 처럼 인덱스의 값을 배열을 숫자 ,객체는 문자를 넣어 준다 


객체의= 생성

 객체를 만드는 법이다.
var grades = {'egoing': 10, 'k8805': 6, 'sorialgi': 80};// 배열은 [](대괄호) 객체는{}(중괄호)

빨간 부분은 인덱스 부분 파란 부분은 값이다 

grades

{egoing: 10, k8805: 6, sorialgi: 80}//객체object타입이라는 것을 알수 있다 



위의 예제에서 egoing은 key가 되고, 10은 value가 된다. 아래는 객체를 만드는 다른 방법이다.

var grades = {};
grades['egoing'] = 10;
grades['k8805'] = 6;
grades['sorialgi'] = 80;


아래와 같은 방법으로 객체를 만들수도 있다.

var grades = new Object();
grades['egoing'] = 10;
grades['k8805'] = 6;
grades['sorialgi'] = 80;



객체를 만들었으니 이제는 객체에서 필요한 값을 가져와보자. 다음은 sorialgi(색인)라는 이름(key)으로
 저장된 값을 가져오는 법이다. 결과는 80이다.

var grades = {'egoing': 10, 'k8805': 6, 'sorialgi': 80};
alert(grades['sorialgi']);

같은 결과를 가져온다 
grades ["egoing"]//아래 처럼 나눌 수 있다 
//grades ["ego"+"ing"]
//grades."ego"+"ing"// 신택스 에러가 난다 
10
grades.egoing// 좀더 간결함
10

다음 방법으로도 객체의 속성에 접근 할 수 있다.

alert(grades.sorialgi);
다음은 객체에 저장된 데이터를 기준으로 반복작업을 하는 방법이다.

2.객체와 반복문

배열은 저장된 데이터 들의 순서를 가지고 있다(추가된 데이터도 중요 ) 하지만 객체는 순서가 없다 .

다만 key와 value가있다 . 이것들이 객체에 저장되지만 순서가 없다 

//key값을 받고 싶을 때 

for in문

for(key in grades) {

 console.log(key);

}

 egoing

 k8805

 sorialgi

//value값을 받고 싶을 때 

for(key in grades) {

 console.log(grades[key]);//grades에 대한 key값을 받아 올 수 있다 

}

10

 6

 80


var grades = {'egoing': 10, 'k8805': 6, 'sorialgi': 80};

for(key in grades) {// 앞쪽은 키 값 뒤에 value넣어준다 

//여기서 key는 grades 가 갖고 있는 key값이 된다 /반복문에 대한 key변수

    document.write("key : "+key+" value : "+grades[key]+"<br />");


}

결과는 아래와 같다.


key :   egoing value : 10

key :   k8805 value : 6

key :   sorialgi value : 80

for 문은 in 뒤에 따라오는 배열의 key 값을 in 앞의 변수 name에 담아서 반복문을 실행한다. 반복문이 실행될 때 변수 key의 값으로 egoing, k8805, sorialgi가 순차적으로 할당되기 때문에 grades[key]를 통해서 객체의 값을 알아낼 수 있다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
</head>
<body>
<!-- html 어떤 항목을 출력 할 때는  LIST라는 형태의 태그를 사용한다  -->
<!-- '목록식을 확인할 수 있다 ' -->
<!-- <UL>
    <LI>egoing</LI>
    <LI>k8805</LI>
    <LI>sorialgi</LI>
</UL>
 -->
    <script type="text/javascript">
var grades = {'egoing'10'k8805'6'sorialgi'80};
for(key in grades) {
    document.write("<LI> key : "+key+" value : "+grades[key]+"</LI>");
}
     </script>
</body>
</html>
cs





객체에는 객체를 담을수도 있고, 함수도 담을 수 있다.



3.객체지향 프로그래밍


객체안에 담길수 있는 값은 무엇인가 에 대해서  알 아보자 


var 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();


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
</head>
<body>
    <script type="text/javascript">
        //grades 변수안에 LIST 라는 키안에 담겨있는 값은 또다른 객체이다 
 
  //grades 는 list와show(데이터와 함수 )를 그룹핑한 그릇이라 할 수 있다 
  // 이러한 것을 객체 지향 프로 그램이라고 한다 
    'list': {'egoing'10'k8805'6'sorialgi'80},
     'show' : function(){//값을로서의 함수 저장
     alert(this.list);// 객체가 가르키는 list의 값을 말한다 
        for(var name in this.list){
            console.log(name,this.list[name]);
            document.write(name+':'+this.list[name]+"<br />");
        }
}
// 객체안에는  함수가 들 어갈 수 있는데 그이유는 함수도 변수에 저장될 수 있기 때문
alert(grades['show']());//객체 안에 함수 호출하는 것
//grades.show());//위와 같은 결과를 갖고 온다 객체에 소속된 함수 호출 
//alert(grades['list']['egoing'])
/*['list']={'egoing': 10, 'k8805': 6, 'sorialgi': 80}
['egoing']=10*/
//this=약속 되어 있는 변수이다 함수가 속해 있는 객체를 가르킨다
 
 
 
 
/*var 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(); </script>
</body>
</html>
cs


이것은 자바스크립트를 이용한 객체 지향 프로그래밍 기법의 핵심이 되는 성질로 취지에 따라서 로직을 객체에 그룹핑해서 객체라는 부품을 조립해서 소프트웨어라는 완제품을 만들 수 있게 해준다.

 객체 지향에 대해서는 뒤에서 자세히 살펴본다.