반응형
얕은 복사 (참조)
값이 아닌 값의 레퍼런스를 복사한다. 즉, 객체를 참조한다.
$(document).ready(function(){
var jsonObj = [{ "NAME":"ggmouse" }, {"NAME":"woo"}, {"NAME":"kim"}];
var shallowCopy = jsonObj; // 얕은복사 (객체 참조)
shallowCopy[0].NAME = "gg";
console.log("shallowCopy[0].NAME : " + shallowCopy[0].NAME);
console.log("jsonObj[0].NAME : " + jsonObj[0].NAME);
});
var shallowCopy = jsonObj;
shallowCopy는 jsonObj객체를 참조하게 됐다.
그래서 shallowCopy[0].NAME 값이 "gg"로 변경되면, 참조하고 있는 jsonObj[0].NAME 역시 "gg"로 변경된다.
깊은 복사 (복사)
실제 순수 값을 복사한다.
$(document).ready(function(){
var jsonObj = [{ "NAME":"ggmouse" }, {"NAME":"woo"}, {"NAME":"kim"}];
var deepCopy = JSON.parse(JSON.stringify(jsonObj)); // 깊은복사 (객체 복사)
deepCopy[0].NAME = "gg";
console.log("deepCopy[0].NAME : " + deepCopy[0].NAME);
console.log("jsonObj[0].NAME : " + jsonObj[0].NAME);
});
var deepCopy = jsonObj;
deepCopy는 jsonObj객체를 참조가 아니라 레퍼런스의 데이터 자체를 복사했다.
따라서 deepCopy[0].NAME 값이 "gg"로 변경하게 되더라도, 참조하고 있는 jsonObj[0].NAME 값은 원본인 "ggmouse" 값을 가진다.
[JavaScript] JSON 데이터 다루기 JSON.parse, JSON.stringfy
반응형
'프로그래밍 > JavaScript ' 카테고리의 다른 글
[javascript] 객체 key, value값 출력 (for 루프) (1) | 2020.09.21 |
---|---|
[javascript] IP 주소 범위 체크 (IP 값이 특정 대역에 속하는지 체크) (0) | 2019.11.28 |
[JavaScript] JSON 데이터 다루기 JSON.parse, JSON.stringify (0) | 2019.11.12 |
[JavaScript] onclick에서 return false;의 의미 (0) | 2019.04.14 |
[JavaScript] this 인자 전달 onclick/href (0) | 2019.04.14 |