All'alba vincerò

At dawn, I will win!

Javascript

JS 혼공 - 객체 복사 Object.assign

나디아 Nadia 2023. 12. 19. 09:40

 

 

 

 

 

 

원시값 - 값이 복사

객체값 - 참조값이 복사

 

 

 

객체의 동작 방식

: 객체가 저장되어 있는 메모리의 주소(참조값)이 저장, 복사된다.

let user = {name: "Nadia"};

let admin = user;

admin.name = "Pete"; // admin의 참조값은 user의 참조값과 같다.

alert(user.name); // Pete 출력

 

 

객체 참조값 비교

참조에 의한 복사
let a = {};
let b = a;

alert(a==b); // true
alert(a===b); // true


독립된 개체
let a = {};
let b = {};

alert(a==b); // false

 

 

 

 


 

 

 

객체 복사 Object.assign

: Object.assign(목표 객체, 복사 객체 1, 2...)

 

- 괄호 안에 목표로 하는 객체와 복사하고자 하는 개체를 넣는다.

- 복사 객체는 얼마든지 많은 객체를 사용할 수 있다.

- 복사 객체들이 목표 객체로 복사된다.

let user = {name: "Nadia"};

let permissions1 = {canView: true};
let permissions1 = {canEdit: true};

Object.assign(user, permission1, permission2);
-> 객체 user에 permission1, permission2의 값을 복사함
현재 user = {name: "Nadia", canView: true, canEdit: true}

 

 

- 목표 객체에 동일한 이름의 프로퍼티가 있는 경우, 기존 값이 덮어씌워진다.

let user = {name: "John"};

Object.assign(user, {name: "Nadia"}); // John이 Nadia로 덮어씌워짐

alert(user.name); // user = {name: "Nadia")

-------------------

let user = {
  name: "Nadia",
  age: 24
};

let clone = Object.assign({}, user); 
--> 객체 user의 모든 프로퍼티가 빈 배열{}에 복사되고, 변수 clone에 할당된다.

 

 

 

* 중첩 객체 복사

:프로퍼티가 다른 객체에 대한 참조값일 경우 => 라이브러리 사용