: 객체의 참조값(주소값)을 복사하는 것
얕은 복사는 참조값과 관련되어있는데, 여기서 참조값은 여려 자료형으로 구성되는 메모리에 저장된 객체이다. 참조값은 Object, Symbol등이 있으며 변수에 객체를 담으면 독립적인 메모리 공간에 값을 저장하고, 변수에 저장된 메모리 공간의 참조(위치 값)을 저장하게 된다. 그렇기 때문에 얕은 복사는 객체 자체를 복사하는것이 아닌, 해당객체의 참조, 즉 위치 값을 복사하는것이다.
얕은 복사를 하는 방법에는 Array.prototype.slice(), Object.assign(), Spread 연산자 (전개 연산자) 등이 있다.
: 객체의 실제 값을 복사하는것
깊은 복사는 원시값과 관련되어 있다. 우선 원시값은 Number, String, Boolean, Null, Undefined등이 있고, 변수에 원시값을 저장하면 변수의 메모리 공간에 실제 데이터 값이 저장된다.저장된 변수를 조작하려고 하면 저장된 실제 값이 조작된다.
깊은 복사를 하는 방법에는 JSON.parse 와 JSON.stringify , 재귀함수를 구현한 복사등이 있다.