Object. assign

박경찬·2022년 8월 8일
0

JavaScript

목록 보기
25/26

object.assign 에 대해 알아보려고 한다.
객체를 좀더 쉽게 병합해주는 메서드 라고 보면된다.

fireBase 에서 유저프로필을 수정하고 바로 수정된 내용을 보여주기 위해서 사용했던 메서드 인데 잊어버릴거 같아서 남긴다.

좀더 쉽게 기억하기위해 예제를 통해 남긴다.

const obj = {apple:1};
const target =(Object.assign({},obj))

//{apple:1}

target
목표 객체. 출처 객체의 속성을 복사해 반영한 후 반환할 객체.

sources
출처 객체. 목표 객체에 반영하고자 하는 속성들을 갖고 있는 객체

object.assigntargetsource가 요구된다.
기본적으로 objectsource가 필요하다.

빈객체(target) 안에 객체들을(soruce) 병합하여 target 이라는 변수에 할당되어 리턴한다는 의미다

target 콘솔로 찍어보면 obj 객체와 같은 {apple:1}이 찍히게 된다.

const obj = {apple:1};
const obj1 = {orange:1};
const obj2 = {lemon:1};
const obj3 = {mango:1};
const target =(Object.assign({},obj,obj1,obj2,obj3))

//{apple: 1, orange: 1, lemon: 1, mango: 1}
const obj = {apple:1};
const obj1 = {orange:1};
const obj2 = {orange:2};
const obj3 = {mango:1};
const target = (object.assign({},obj,obj1,obj2,obj3))

//{apple: 1, orange: 2, mango: 1}

위 예제로 알 수 있는 건 같은 속성 이름(키)이 있다면 덮어쓰기가 되며, 새로운 속성 이름이 source에 있다면 target 객체에 추가된다.

사실 객체를 복제하거나 병합 할 일은 거의 없다. 참조에 의한 복사로 해결 가능한 일이 대다수이다.

정말 복제가 필요한 상황이라면 새로운 객체를 만든 다음 기존 객체의 프로퍼티들을 순회해 원시 수준까지 프로퍼티를 복사하면 된다.

let user = {
  name: "Chan",
  school: "다람쥐초등학교",
  
};

let clone = {}; // 새로운 빈 객체

// 빈 객체에 user 프로퍼티 전부를 복사해 넣습니다.
for (let key in user) {
  clone[key] = user[key];
}

Object.assign은 반복문 없이도 간단하게 객체를 복사할 수 있다.

let user = {
  name: "Chan",
  school: "햇님마을초등학교"
};

let clone = Object.assign({}, user);

0개의 댓글