티스토리 뷰
객체(Object)는 데이터를 담아내는 컨테이너라는 점에서 배열과 아주 유사하다. 가시적인 차이가 있다면 배열은 중복되지 않는 인덱스(색인)이 데이터가 추가될 때마다 자동으로 지정되지만 객체는 배열에서 자동으로 지정되는 '인덱스'를 직접 지정할 수 있다. //인덱스를 문자열로 지정하고 싶다면 객체를 사용하면 됩니다.
*다른 언어에서 연관배열(associative array) 또는 맵(map), 딕셔너리(Dictionary)라는 데이터 타입이 객체에 해당합니다.
객체의 생성
- 배열은 [] 대괄호로 여닫지만 객체는 {}중괄호로 여닫습니다.
- 구분은 콤마로 합니다.
- 객체는 key : value 로 이루어져 있습니다. // 아래 코드에서 key는 cong, vella, sollar 가 되겠죠
const grades = {'cong': 10, 'vella': 12, 'sollar': 6};
객체 생성하는 다른 방법
- 참고로 [] 대괄호 안에 들어가는 인데스명이 객체에서 key값을 말합니다. -> index의 역할을하는 것이 key
1번 방법 {}
const grades = {}; //빈 객체 생성
grades['egoing'] = 10; // 객체명[인덱스명] = 값;
grades['k8805'] = 6;
grades['sorialgi'] = 80;
2번 방법 new Object()
- {}중괄호는 new Object() 와 같은 의미입니다.
const grade = new Object(); // {}와 같은 의미인 new Object()
grade['cong'] = 10; // vscode prettier을 쓰면 "cong" 으로 바꾸는데 '', ""는 크게 상관없는 것으로 앎
객체의 속성에 접근하는 방법
- []대괄호를 통해서 접근하는 방법 -> ['co'+'ng'] 을 해도 정상작동한다 대괄호 안에서 문자열 결합가능
- .(dot)을 통해 접근하는 방법 -> 코드가 간결하지만 위처럼 문자열을 분리하면 안됨
grades['cong'];
grades['co'+'ng'];
//output : 10
grades.cong;
// output : 10
객체와 반복문
- 이전에 우리가 배웠던 배열은 저장된 데이터들이 '순서'를 가지고 있습니다(자동으로 인덱스가 부여되기 때문에).
- 객체 안에는 순서가 없습니다. 다만 key와 value가 들어가있을 뿐이죠
for in문
- 반복문을 객체와 결합해서 사용하는 방법입니다.
- for문 안에있는 (key in 객체명) 의 key는 객체의 key값을 담고있는 변수입니다. // 변수이기 때문에 key라는 이름을 바꿀 수 있습니다. 물론 앞에는 let이나 const를 붙여줘야 겠죠. + 내부 코드에 key라고 표시되어있는 부분도 바뀐 변수명으로 변경해야 합니다.
- value를 알고싶다면 "객체명[key]"를 통해 가능합니다.
const grades = {'egoing': 10, 'k8805': 6, 'sorialgi': 80};
for(key in grades) {
document.write("key : "+key+" value : "+grades[key]+"<br />");
}
객체에 담을 수 있는 것
- 객체에는 객체를 담을수도 있고, 함수를 담을수도 있다.
- 객체 내부에 있는 함수나 객체를 [""]대괄호를 통해서 실행할 수 있습니다. //VSCode에서 객체의 key값에 표기된 '', ""를 없애기도하는데 이를 호출할 때 대괄호를 사용한다면 객체명["key"]라고 써야 정상작동됩니다.
const grades = {
list: { cong: 10, wong: 20 }, // 원래라면 'list' 라고 쓰여있어야 합니다.
show: function () {
alert("this is show function");
},
};
//grades 객체 안의 list 객체의 cong의 value가져오기
alert(grades["list"]["cong"]);
//grades 객체의 함수 실행하기
grades["show"](); // 방법1
grades.show(); // 방법2
객체 내부의 this
const grades = {
list: { cong: 10, wong: 20 },
show: function () {
for (const name in this.list) {
console.log(name, this.list[name]);
}
},
};
grades.show();
/*output:
cong 10
wong 20 */
- 코드에 있는 this는 맥락상 이 함수가 소속되어 있는 객체 즉, grades 를 가리킵니다.
- this.list 는 grades.list 를 말하는 것이겠죠
'Frontend > JavaScript' 카테고리의 다른 글
[생활코딩] JS문법: UI와 API 문서보는 법 (0) | 2022.01.08 |
---|---|
[생활코딩] JS문법: 모듈(Module) (0) | 2022.01.07 |
[생활코딩] JS문법: 배열(Array) (0) | 2022.01.05 |
[생활코딩] JS문법: 함수(Function) (0) | 2022.01.03 |
[생활코딩] JS문법: 반복문(loop or iterate) (0) | 2022.01.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 항해99프론트후기
- fs모듈 넥스트
- aspect-ratio
- 타입스크립트 DT
- getStaticPaths
- 원티드 프리온보딩 FE 챌린지
- 틸드와 캐럿
- 부트캠프항해
- ~ ^
- nvm 설치순서
- 형제 요소 선택자
- nvm경로 오류
- 항해99프론트
- tilde caret
- Prittier
- 원티드 3월 프론트엔드 챌린지
- grid flex
- D 플래그
- 프리온보딩 프론트엔드 챌린지 3월
- is()
- 프리렌더링확인법
- 원티드 프리온보딩 프론트엔드 챌린지 3일차
- getServerSideProps
- 원티드 FE 프리온보딩 챌린지
- 타입스크립트 장점
- 항해99추천비추천
- reactAPI
- float 레이아웃
- text input pattern
- && 셸 명령어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함