생활코딩 JavaScript의 강의를 듣고 나름대로 정리한 내용이다.

https://opentutorials.org/course/743/6491

 

객체 - 생활코딩

객체(Object) 지금까지 살펴본 배열은 아이템에 대한 식별자로 숫자를 사용했다. 데이터가 추가되면 배열 전체에서 중복되지 않는 인덱스가 자동으로 만들어져서 추가된 데이터에 대한 식별자가 된다. 이 인덱스를 이용해서 데이터를 가져오게 되는 것이다. 만약 인덱스로 문자를 사용하고 싶다면 객체(dictionary)를 사용해야 한다. 다른 언어에서는 연관배열(associative array) 또는 맵( map), 딕셔너리(Dictionary)라는 데이터 타입

opentutorials.org

//객체 1강 객체의 문법
객체 : 연관된 데이터를 담는 데이터 자료형이라는 점에서는 배열과 유사하다.
하지만, 객체의 경우 인덱스로 문자를 사용할 수 있다.
배열의 경우는 인덱스가 자동으로 만들어진다.(인덱스가 0부터 시작한다.)

객체의 생성
다음은 객체를 만드는 법이다.
let grades = {'ron' : 100, 'tom' : 80, 'susan' : 50};

혹은

let grades = { }; // 먼저 비어 있는 객체를 만들어준다.
grades['ron'] = 100;
grades['tom'] = 80;
grades['susan'] = 50;

혹은

let grades = new Object( ); // new Object( ) === { }
grades['ron'] = 100;
grades['tom'] = 80;
grades['susan'] = 50;
// index의 역할을 하는 것 : key, 이에 따른 값 : value
// 여기서 ron, tom, susan은 key이고 100, 80, 50은 value이다.

객체의 성분(element) 가져오기
let grades = {'ron' : 100, 'tom' : 80, 'susan' : 50};

grades.ron; // 100
grades['ron']; // 100
grades.tom; // 80
grades['tom']; // 80
grades.susan; // 50
grades['susan']; // 50

//객체 2강 객체와 반복문의 조우
배열은 저장된 데이터들이 순서를 가지고 있다. 따라서 for문을 통해 데이터를 순서대로 꺼내올 수 있다.
하지만 객체 안에 저장된 데이터들은 순서가 없다. 단지 key : value의 쌍으로 이루어져 있을 뿐이다.

let grades = {'ron' : 100, 'tom' : 80, 'susan' : 50};
for(key in grades) { // 반복문이 실행될 때마다 grades라는 변수 안에 담겨 있는 값들을 하나씩 가져오는데, key값만을 key라는 변수에 담는다.
    console.log(key); // ron, tom, susan
    console.log(grades[key]); // 100, 80, 50
}   

html 상에서

  
    
    
    
    

              

 

 

 

 

        


  
// 화면 상에 li태그로 감싼 채 key : ~ value : ~ 형태로 출력된다.

for in문을 배열에서도 사용할 수 있다.
let array = ['2', '4', '6', '8'];
for(let name in array) {
  console.log(name); // 결과 : 0, 1, 2, 3 <= 배열의 index는 0부터 차례대로 자동으로 지정되어 있다.
  console.log(array[name]); // 결과 : 2, 4, 6, 8
}

//객체 3강 객체지향 프로그래밍
let grades = {
    'list' : {'ron' : 100, 'tom' : 80, 'susan' : 50},
    'show' : function( ) {
        alert('Hello world');
    }
} // 객체 안에는 배열이든 함수든 다 저장할 수 있다.
grades['show']( ); // 'Hello world'가 출력된 alert 창이 뜬다.
grades['list']['ron']; // 100
grades['list']['tom']; // 80
grades['list']['susan']; // 50

this => 자바스크립트에서 약속되어져 있는 변수

let grades = {
    'list' : {'ron' : 100, 'tom' : 80, 'susan' : 50},
    'show' : function( ) {
        for(var name in this.list) {
            console.log(name, this.list[name]);
            // 여기서 this는 함수가 소속되어 있는 객체를 가리킨다.
            // 여기서 this.list == grades.list
        }
     }
}
grades.show( ); // grades 객체에 소속되어 있는 함수를 호출한다.
grades 객체는 list 데이터와 show라는 함수를 grouping한 그릇이다.
list와 show는 서로 관련성이 있어야 한다.
서로 관련성이 있는 것끼리 grouping할 수 있다.
이와 같은 것을 객체 지향 프로그래밍이라고 한다. 

 

'Today I learned' 카테고리의 다른 글

2020-11-11  (0) 2020.11.11
2020-02-06 모듈  (0) 2020.02.06
2020-02-05 JavaScript-배열  (0) 2020.02.05
2020-02-05 JavaScript - 함수  (0) 2020.02.05
2020-02-05 JavaScript - 반복문  (0) 2020.02.05
복사했습니다!