FrontEngineer JungBam

깊은 복사와 얕은 복사 본문

자바스크립트 개념

깊은 복사와 얕은 복사

정밤톨 2022. 11. 18. 19:08

깊은 복사 : 값을 복사하는 것.

얕은 복사 : 값을 갖고있는 주소값을 복사하는 것.

                   → 이 때에는 실제 값을 갖고 있는 메모리 셀이 변경되면 주소값을 복사했기 때문에 그 값이 의도하지 않더라도 변하게 됨.

        ★ 이러한 얕은 복사로 인한 원본 손상에 대한 방지를 위한 Object 메소드로 Object.freeze()가 있다.

깊은 복사와 얕은 복사를 각각 사용해야 할 경우를 고민하고 사용해야함.
스프레드 연산자를 이용한 깊은 복사
☞ 배열이나 깊이가 1인 객체의 경우 가능하나, 깊이가 2 이상인 경우 참조값에 따른 값을 가져오는 것이 아니기 때문에 어려움.
☞ 깊이가 2 이상인 객체의 깊은 복사는 별도의 방법이 필요함.

① JSON객체 사용
   - const 식별자 = JSON.parse(JSON.stringify(복사할 객체))
   - 성능적으로는 별로임.
② Object 객체 메소드 assign() 사용
   - const 식별자 = Object.assign({}, 복사할 객체)
   - Object 객체의 내부 메소드로 호환성이 우수함.
③ lodash 라이브러리의 clone 메소드 사용
   - const 식별자 = _.cloneDeep(복사할 객체)
반응형
Comments