객체는 한 변수에 여러 정보를 담아 사용할 수 있다
이런 식으로 각 변수에 정보들을 각각 할당하면 각 변수 간 관계성을 알 수 없고,
변수가 너무 많이 만들어진다는 불편함이 있음
배열을 사용하면 정보간의 관계성을 알 수 있지만
각 인덱스에 해당하는 요소가 어떤 정보를 의미하는지 알 수 없음
배열에 대한 구조를 알고 있는 사람만 각 인덱스 정보를 정확하게 접근할 수 있음
키와 값이 쌍으로 이루어져 있으며 {}안에 키:값이 존재 각 정보쌍은 ,(쉼표)로 구분해줌
객체는 하나의 변수 안에 여러가지 정보가 담겼을 때 적합한 자료구조
ex) 주소록, 회원정보 등
키:값 한쌍은 속성(프로퍼티)라고 불리며 모든 타입의 값이 프로퍼티가 될 수 있다
(배열, 객체, 함수, boolean 등등)
점을 사용하여 접근 - 객체의 속성을 가져옴
user.firstName; // 'Steve' user.city; // 'Seoul
키 값이 (동적으로 변할 때)변수일 때 Bracket notation을 사용
[]대괄호를 사용하는데 ''로 감싸주는 구조 => 문자열로 들어가야함
user['firstName']; // 'Steve' user['city']; // 'Seoul user[city] // !주의 -- 이때는 city를 변수로 취급하기 때문에 값이 나오지 않음
user['category'] = '직장인'; user.isWorking = true; user.dislike ['월요일', '맛없는 점심']; + Object.assign(객체1, 객체2) -- 두 객체를 합쳐줌(복붙) 원본 객체는 변경하지 않음 (arr.slice()와 비슷하게도 사용 가능)
delete user.dislike; //결과 user.firstName; // 'Steve' ... user['category']; // '직장인'; user.isWorking; // true;
객체에 키가 있는지 확인 'firstName' in user; // true 'dislike' in user; // false Object.keys(객체) -- 객체의 키만 배열로 Object.values(객체) -- 객체의 값만 배열로
for (const property in object) { console.log(`${property}: ${object[property]}`); } /* for(let 키 in 객체){ //객체의 모든 키를 처음부터 끝까지 순회 } */