자바스크립트에는 8개의 자료형이 있습니다.
7개의 자료형은 오직 하나의 데이터(문자열, 숫자열)등 만 담을 수 있기 때문에 원시형(Primitive Type)이라고 부릅니다.
하지만 객체형 은 원시형과 달리 다양한 데이터를 담을 수 있습니다. 키로 구분된 데이터 집합이나 복잡한 개체(entity)를 저장할 수 있습니다.
자바스크립트에서 객체는 상당히 중요하기 때문에 잘 기억해야합니다.
객체는 중괄호 {...}를 사용해서 만듭니다. 중괄호 안에는 '키(key): 값(value)'로 구성된 프로퍼티(property)를 여러 개 넣을 수 있습니다.
ex)
항구에서 컨테이너는 프로퍼티 역할을 합니다. 각 컨테이너에는 고유번호가 붙어 있고 이를 객체의 키라고 생각하면 됩니다. 컨테이너 안에 들어 있는 물건은 파일이겠죠. 고유번호를 통해 쉽게 찾을 수 있고 추가, 삭제도 가능합니다.
let user = { // user는 객체
name : 'YS', // 키는 name, 값은 YS
age : 25 // 키는 age, 값은 25
};
user는 항구
name, age 는 컨테이너
YS, 25 는 내용물입니다.
프로퍼티에는 모든 자료형이 올 수 있습니다.
user.isAdmin = true;
위와 같은 방법을 통해 추가할 수 있습니다.
delete user.age;
위와 같은 방법을 통해 삭제할 수 있습니다.
객체를 const로 선언했을지라도 객체는 수정할 수 있습니다.
const user = {
name: 'YS',
};
user.name = 'KJ';
console.log(user.name);
프로퍼티의 키 값으로 for, let, return 을 사용하면 안됩니다.
객체 사용시 큰 불이익이 있기 때문입니다.
식별자도 사용하지 않는 것이 좋습니다.
자바스크립트 객체의 특징은 없는 프로퍼티에 접근해도 에러가 나지 않습니다.
undefined를 반환합니다.
존재 여부를 확인하기 위해 in 연산자를 활용합니다.
let user = {name: 'YS', age: 25};
console.log("age" in user); // true
console.log("name" in user); // true
console.log("hobby" in user); // false
또 다른 방법
let user = {name: 'YS', age: 25};
let key = "age";
console.log(key in user);
let user = {
name: 'YS',
age: 25,
isAdmin: true
};
for(let key in user){
console.log(key); // name, age, isAdmin 출력
console.log(user[key]); // YS, 25, true 출력
}
마지막 한 마디..
객체마다 고유 기능을 제공합니다. 사람들은 Array Type, Date Type이라는 단어를 사용하지만 사실 Array와 Date는 독직 자료형이 아니라 객체형에 속합니다.