DODONOT Dev
article thumbnail

객체복사

let user = {
	name: “john”,
	age: 27,
};

객체를 복사하는 방법 2가지 (얕은 복사, 깊은 복사)

얕은 복사

using Object

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

오브젝트 내의 assign 내부함수를 이용해서 두 객체를 병합해서 반환

빈 객체에 user 객체를 머지시켜서 반환

for loop

let admin = {};

for (let key in user){
	admin[key] = user[key];
}

user에 있는 값을 admin에 일일이 복사해라

전개연산자

let admin = { …user };

user에 있는 모든 필드 값을 admin object에 꾸려라

얕은 복사(shallow copy)의 문제점

객체 내 또 다른 객체가 있다면 복사되지 않는다

→ 객체 내 또 다른 객체는 주소값을 복사해오기 때문에 결국 같은 곳을 가르키게 됨

→for문과 json 객체(stringify 객체를 문자열로 변환 원본 객체와 참조 끊김)복사로 해결가능

깊은복사

JSON 객체를 이용

let admin_json = JSON.parse(JSON.stringify(user));

// stringfy : js object → string, parse: string → js object

stringify : 객체를 문자열로 변환

parse : 문자열을 다시 객체로 변환

→ 원본 객체와 참조 끊김

그러므로 객체에 대한 복사를 하려면 깊은 복사를 사용하는게 좋다.

profile

DODONOT Dev

@두두나 Dev

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!