
얕은 복사 깊은 복사
얕은 복사와 깊은 복사란?
얕은 복사는 주소값만 복사하는 방식 겉 껍데기는 새로 만들지만 그 안의 내용물(객체나 배열)은 원본과 같은 메모리 주소를 가리킵니다.
깊은 복사는 메모리상의 복잡한 구조 전체를 그대로 복제하여 완전히 독립적인 새로운 복사본을 만드는 방식
얕은 복사의 문제점
얕은 복사의 문제점은 복사본의 값을 수정했는데
원본 데이터까지 함께 변해버리는 의도치 않은 부작용이 발생
깊은 복사를 Javascript에서 하는법
json을 사용한 방법
-
직렬화 (Serialization): JSON.stringify(obj) — 객체 정보를 문자열로 변환.
-
역직렬화 (Deserialization): JSON.parse(string) — 문자열을 다시 객체 정보로 변환.
json을 사용하지 않은 방법
- structuredClone() : 최근 자바스크립트에 도입된 표준 함수.
JSON 방식보다 빠르고 Date, Map, Set 등 더 복잡한 데이터 타입까지 완벽하게 깊은 복사를 해줍니다.
- 대표적인 것이 Json 을 활용
- 객체정보 ---> 문자열 ----> 객체정보
(직렬화) (역직렬화)
프론트엔드(브라우저) 와 서버간의 통신에서 json이 사용되는 이유?
- 공통 언어 역할 : 서버(Java, Python 등)와 브라우저는 사용하는 언어가 다르기 때문에 공통 언어로 json로 변환하여 사용
- 가볍고 빠름: XML 같은 다른 규격보다 문법이 단순하고 용량이 작아 네트워크 전송에 유리
- 규격화: 데이터를 일정한 규칙(JSON)으로 직렬화하면 받는 쪽에서 규칙대로 역직렬화하여 즉시 사용 가능
직렬화 / 역직렬화 기술이 다른것도 있어?
| 기술 | 특징 및 용도 | 단점 |
|---|---|---|
| BSON | MongoDB에서 사용. JSON보다 다양한 데이터 타입을 이진 형태로 저장. | 용량 문제, MongoDB 생태계 밖에서는 지원하는 라이브러리가 적어 범용성이 떨어짐 |
| Protobuf | 구글 제작. 매우 작고 빠른 이진 직렬화. 고성능 서버 간 통신용. | 별도의 .proto 파일을 작성하고 이를 각 언어용 코드로 컴파일하는 과정이 필수, 데이터 구조(스키마)가 엄격 |
| MessagePack | JSON의 유연함을 유지하면서 용량을 더 줄인 이진 포맷 | CPU에 부하를 주는 공격에 취약, 라이브러리 의존성 |
29
이규화
댓글
댓글을 작성하려면 이 필요합니다.