const user = {
name : 'Mike',
age : 30,
}
const cloneUser = user;
cloneUser.name = 'Tom';
console.log(user); // { name : 'Tom', age : 30 }
cloneUser
를 만들어서 user
를 넣어주면 user
에 있는 내용이 복제되는 걸까?user
와 cloneUser
라는 다른 이름의 변수로 접근할 수 있다.)cloneUser.name = 'Tom';
이후로는 user 라는 객체의 name 값이 Mike가 아닌 Tom 으로 바뀜.const newUser = Object.assign({}, user);
//초기값 +
{ } + { name : 'Mike', age : 30 } =
{
name : 'Mike',
age : 30
}
{}
: 초기값 (초기값은 무조건 빈 객체일 필요는 없다.)user
: 두번째 매개변수부터 들어온 값들이 초기값에 병합된다.newUser.name = 'Tom';
console.log(user.name) //Mike
newUser != user; //true
newUser
는 user
와 완전히 다른 객체이므로(가르키는 주소가 다름) newUser
의 값을 변경해도 user
에는 영향이 없다.const newUser = Object.assign({gender : 'male'}, user);
console.log(newUser) // { age: 30, gender: "male", name: "Mike" }
존재하는 객체에 다른 객체를 복제해서 추가할 수 있다.
const newUser = Object.assign({name : 'Tom'}, user);
console.log(newUser) // { age: 30, name: "Tom" }
const user = {
name : "Mike"
}
const info1 = {
age : 30
}
const info2 = {
gender : 'male'
}
const newUser = Object.assign(user, info1, info2);
console.log(newUser) // { age: 30, gender: "male", name: "Mike" }
객체가 갖고있는 키들을 배열에 저장해서 반환한다.
const user = {
age: 30,
gender: "male",
name: "Mike"
}
const result = Object.keys(user);
console.log(result); //["age","gender","name"]
객체가 갖고있는 값들을 배열에 저장해서 반환한다.
const user = {
age: 30,
gender: "male",
name: "Mike"
}
const result = Object.values(user);
console.log(result); //[30,"male","Mike"]
객체가 갖고있는 키와 값을 쌍으로 묶어서 배열에 저장해서 반환한다.
const user = {
age: 30,
gender: "male",
name: "Mike"
}
const result = Object.entries(user);
console.log(result); //[["age", 30], ["gender", "male"], ["name", "Mike"]]
배열로 저장된 키와 값을 객체로 반환한다. (Object.entries( )의 반대)
const arr = [
["age", 30],
["gender", "male"],
["name", "Mike"]
]
const result = Object.fromEntries(arr);
console.log(result); //{ age: 30, gender: "male", name: "Mike" }
[ ]
를 이용해서 객체의 변수명에 미리 계산된 변수를 넣을 수 있다.
어떤 게 키가 될지 모르는 객체를 만들때 유용하다
function makeObj(key, val) {
return {
[key] : val
}
}
const obj = makeObj("나이", 30);
console.log(obj); //{ 나이: 30 }
const obj2 = makeObj("성별", 'female');
console.log(obj2); //{ 성별: female }