[JS] 객체 메소드 (코딩앙마 자바스크립트 중급)

김다빈·2023년 8월 6일
0

자바스크립트

목록 보기
29/36
post-thumbnail

🚩 Object.assign( ) : 객체 복사


const user = {
  name : 'Mike',
  age : 30,
}

const cloneUser = user;
cloneUser.name = 'Tom';

console.log(user); // { name : 'Tom', age : 30 }
  • cloneUser를 만들어서 user를 넣어주면 user에 있는 내용이 복제되는 걸까?
  • ❌ NO!! ❌
    객체 자체가 복제되는 것이 아니라 객체를 저장하고 있는 메모리의 주소(참조값)이 복제됨 (즉, 하나의 주소를 usercloneUser 라는 다른 이름의 변수로 접근할 수 있다.)
  • 그렇기 때문에 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
  • 이제 newUseruser와 완전히 다른 객체이므로(가르키는 주소가 다름) 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" }

🚩 Object.keys( ) : 객체의 key를 배열로 반환


객체가 갖고있는 키들을 배열에 저장해서 반환한다.

const user = {
  age: 30,
  gender: "male",
  name: "Mike"
}

const result = Object.keys(user);
console.log(result); //["age","gender","name"]

🚩 Object.values( ) : 객체의 value를 배열로 반환


객체가 갖고있는 값들을 배열에 저장해서 반환한다.

const user = {
  age: 30,
  gender: "male",
  name: "Mike"
}

const result = Object.values(user);
console.log(result); //[30,"male","Mike"]

🚩 Object.entries( ) : 객체의 key&value를 배열로 반환


객체가 갖고있는 키와 값을 쌍으로 묶어서 배열에 저장해서 반환한다.

const user = {
  age: 30,
  gender: "male",
  name: "Mike"
}

const result = Object.entries(user);
console.log(result); //[["age", 30], ["gender", "male"], ["name", "Mike"]]

🚩 Object.fromEntries( ) :


배열로 저장된 키와 값을 객체로 반환한다. (Object.entries( )의 반대)

const arr = [
  ["age", 30],
  ["gender", "male"],
  ["name", "Mike"]
]

const result = Object.fromEntries(arr);
console.log(result); //{ age: 30, gender: "male", name: "Mike" }

🚩 계산된 프로퍼티 (Computed Property)


[ ] 를 이용해서 객체의 변수명에 미리 계산된 변수를 넣을 수 있다.

어떤 게 키가 될지 모르는 객체를 만들때 유용하다

function makeObj(key, val) {
  return {
    [key] : val
  }
}

const obj = makeObj("나이", 30);
console.log(obj); //{ 나이: 30 }

const obj2 = makeObj("성별", 'female');
console.log(obj2); //{ 성별: female }
profile
Hello, World

0개의 댓글

관련 채용 정보