객체의 키(key)와 값(value)으로 구성된 프로퍼티(property)들의 정렬되지 않은 집합을 의미한다. 이때 프로퍼티의 값에는 함수가 올 수 있고 이를 메소드라 한다.
객체는 중괄호 내부에 1:1의 쌍으로 이루어진 키와 값으로 구성되고, 인덱스도 존재하지 않는다.
객체가 사용되는 이유는 데이터간의 관계성의 차이때문이다. 배열은 여러개의 변수를 사용할때 관계성을 알 수 없지만 객체는 데이터의 관계성을 확보할 수 있을뿐더러 키(key)에 접근함으로써 데이터의 의미도 알 수 있다.
let obj = {
color = 'red'
}
obj.color; // 'red' - dot notation
obj['color']; // 'red' - bracket notation
obj["color"]; // 가능
obj[`color`]; // 백틱으로 이루어진 템플릿 리터럴도 가능
// 이때 bracket notation의 대괄호 내부에 변수를 넣어 조회가능
let key = 'color'
obj[key]; //가능
obj[`${key}`]; // 가능
obj.fruit = 'tomato';
obj['price'] = 2000;
console.log(obj);
// [color : 'red', fruit : 'tomato', price : 2000]
객체(object)의 속성(property) 삭제는 'Delete'를 사용할 수 있는데,
이때, 선택된 속성(property)은 값(value)이 undefined가 되는 것이 아니고 객체(object) 상에서 완전히 삭제됨!
delete obj.fruit;
delete obj['price'];
console.log(obj);
// [color : 'red']
'in' 연산자를 통해 객체 내 키(key)가 존재하는지 여부를 조회할 수 있음.
'color' in obj; // true
'fruit' in obj; // true