less than 1 minute read

var a = {x:1,y:2}; var b = {a:a,y:2}; var c = Object.assign({},b);

JSON.stringify(c) =>”{“a”:{“x”:1,”y”:2},”y”:2}”

a.x = 100;

JSON.stringify(c) =>”{“a”:{“x”:100,”y”:2},”y”:2}”

// c.a 는 a 이기 때문(객체를 적용하면, 참조로 값이 제어됨)에 a.x로 바꾸면 참조로 연결된 c.a.x 도 바뀐다.

b.y=200 =>JSON.stringify(c) “{“a”:{“x”:100,”y”:2},”y”:2}”

// b.y와 c.y는 서로 별개이다. 변수가 기본형이라서 값이 복사되어서 별개로 동작한다.


deep clone 으로 동작시키고 싶으면 var obj1 = {x:1,y:2} var obj2 = JSON.parse(JSON.stringify(obj1)); 처럼 하는 방법이 있다.



🔗original-link

Updated: