객체란 이름(name)과 값(value)으로 구성된 프로퍼티(property)의 정렬되지 않은 집합이다.
프로퍼티의 값으로 함수가 올 수도 있는데 이러한 프로퍼티를 메소드(method)라고 한다.
property 값에는 어느 type이나 가능하다.(string, numberm array, object, function..)
객체의 프로퍼티 참조 방법
객체이름.프로퍼티이름
or
객체이름["프로퍼티이름"]//메소드 참조
객체이름.메소드이름()
예제
var person = {
name: "홍길동", // 이름 프로퍼티
birthday: "010101", // 생년월일 프로퍼티
pId: "1234567", // 개인 id 프로퍼티
fullId: function() { // 생년월일과 id를 합쳐서 주민등록번호를 반환.
return this.birthday + this.pId;
}
};
person.name // 홍길동
person["name"] // 홍길동
person.fullId() // 0302191234567
const user = {
name: 'Mike',
age:30
}
const cloneUser = user;
=> 이렇게 사용하면 안된다.
객체가 복사되는 것이 아니라 참조값이 복사되어 cloneUser가 변경되면 원래객체user도 같이 변경된다. 즉, 동일한 객체로 보는 것이다.
const newUser = Object.assign({},user);
{} 빈 객체는 초기값,
{}+{name : 'Mike', age:30} = 빈객체에 user가 병합된다.
newUser 와 user는 같은 객체가 아니다.
Object.assign({name:'Tom'},user);
똑같은 변수가 초기값으로 오면 덮어쓴다.
name:'Tom'을 덮어써서 name: 'Mike'가 된다.
대신, 새로운 변수가 초기값으로 오면 추가된다.
const user = {
name : 'Mike'
}
const info1 = {
age: 30,
}
const info2 = {
gender : 'male',
}
Object.assign(user,info1,info2)//user에 info1,info2합쳐짐
Object.keys(user);
//["name","age"]
Object.values(user);
//["Mike","30"]
Object.entries(user);
//["name","Mike"],["age",30]
const arr = [
["name","Mike"],
["age",30],
["gender","male"]
];
Object.fromEntries(arr);
// {
// name: 'Mike',
// age:30,
// gender:'male',
// }