본문 바로가기
프로그래밍 및 개발/Javascript

JavaScript 얕은 복사와 깊은 복사 패턴 소개, 사용 사례, 예시 코드

by typenine9 2023. 10. 26.
300x250

JavaScript 얕은 복사와 깊은 복사 패턴 소개, 사용 사례, 예시 코드

 

javascript logo

 

JavaScript에서 객체와 배열을 복사할 때 얕은 복사와 깊은 복사는 중요한 주제입니다. 이 글에서는 얕은 복사와 깊은 복사를 수행하는 패턴과 각각의 특징에 대해 알아보겠습니다.

 

얕은 복사 패턴

 

 

얕은 복사의 개념

얕은 복사는 원본 객체의 프로퍼티를 복사하여 새로운 객체를 생성하는 것입니다. 이 복사본은 원본 객체의 프로퍼티를 참조하므로 내부 객체가 있는 경우 주의가 필요합니다.

 

얕은 복사 패턴 예시 코드

var copyObject = function(target) {
  var result = {};
  for (var prop in target) {
    result[prop] = target[prop];
  }
  return result;
}

 

깊은 복사 패턴

 

 

깊은 복사 - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN

객체의 깊은 복사는 복사본의 속성이 복사본이 만들어진 원본 객체와 같은 참조(메모리 내의 같은 값을 가리킴)를 공유하지 않는 복사입니다. 따라서 원본이나 복사본을 변경할 때, 다른 객체가

developer.mozilla.org

 

깊은 복사의 개념

깊은 복사는 원본 객체의 모든 프로퍼티와 내부 객체까지 재귀적으로 복사하여 완전히 독립적인 복사본을 생성합니다. 내부 객체의 변경이 원본에 영향을 미치지 않습니다.

 

깊은 복사 패턴 예시 코드

var copyObjectDeep = function(target) {
  var result = {};
  if (typeof target === 'object' && target !== null) {
    for (var prop in target) {
      result[prop] = copyObjectDeep(target[prop]);
    }
  } else {
    result = target;
  }
  return result;
}

 

얕은 복사와 깊은 복사 패턴의 사용 사례

 

 

 

얕은 복사 패턴

  • 객체를 복사하고 원본 객체의 일부 프로퍼티만 변경할 때.
  • 원본 객체와 복사본이 일부 프로퍼티를 공유하는 것이 상관 없을 때.

 

깊은 복사 패턴

  • 원본 객체와 완전히 독립적인 복사본을 만들어야 할 때.
  • 내부 객체가 있는 복합 데이터 구조를 복사하고 관리해야 할 때.

 

끝으로

 

얕은 복사와 깊은 복사는 JavaScript에서 데이터를 복사하거나 복사본을 생성할 때 중요한 패턴입니다. 얕은 복사는 프로퍼티를 복사하고 참조를 공유하는데 사용되며, 깊은 복사는 프로퍼티와 내부 객체까지 완전히 독립적인 복사본을 만들 때 유용합니다. 올바른 패턴을 선택하면 데이터를 안전하게 다룰 수 있을 것입니다.

 

▼ 아래 글도 읽어보세요! ▼

 

 

JavaScript 일급 객체로서의 함수 소개, 특징, 예제 코드

JavaScript에서 일급 객체로서의 함수 JavaScript에서 함수는 특별한 역할을 수행하는 일급 객체입니다. 이 글에서는 JavaScript에서 함수가 일급 객체로서 가지는 특징과 그 중요성에 대해 살펴보고, 예

typenine9.tistory.com

 

 

[python] 파이썬 배치파일 만들기 (pyintaller 활용하여 exe파일 배포)

파이썬 코드로 작성할 걸 공유해야하는 경우가 생겼다. 특정 서버에 설치된 DB에 데이터를 insert 작업하는 코드였는데 코드 자체를 보내기 보다 배치파일로 만들어 실행하게 하면 편하지 않을까

typenine9.tistory.com

 

 

파이썬 matplotlib으로 차트(pyplot) 만들 때 한글 깨짐

파이썬 차트 한글 깨짐 파이썬 코드로 차트 출력하는 예시를 확인하려고 코드를 정리하고 돌려봤습니다. 그런데 이게 왠걸. 차트에 한글이 깨져서 나왔습니다. import pandas as pd import matplotlib.pyplot

typenine9.tistory.com

 

<