[javascript] 객체 할당과 참조 문제.
자바스크립트에서는 객체를 다룰 때 객체 할당과 참조 문제에 주의해야 합니다. 객체 할당은 참조를 복사하고, 객체를 수정하는 경우에도 같은 참조를 가진 변수들이 영향을 받을 수 있습니다.
객체 할당
자바스크립트에서 객체를 할당할 때, 변수에는 객체의 실제 데이터가 복사되는 것이 아니라, 참조가 복사됩니다.
예를 들어:
let originalObject = { name: "John" };
let copiedObject = originalObject;
이 경우 copiedObject
는 originalObject
와 같은 객체를 가리키는 참조를 갖습니다.
참조 문제
만약 copiedObject
를 통해 객체를 수정하면, originalObject
또한 같은 객체를 참조하고 있기 때문에 같이 수정됩니다.
copiedObject.name = "Jane";
console.log(originalObject.name); // 출력 값: "Jane"
copiedObject
를 통해 객체를 수정했지만, originalObject
의 값 역시 변경된 것을 확인할 수 있습니다.
해결 방법
이러한 문제를 피하려면, 깊은 복사를 활용하여 객체를 복사해야 합니다. 깊은 복사를 통해 실제 데이터가 복사되어 새로운 참조가 생성되므로, 객체를 수정해도 다른 변수에 영향을 주지 않습니다.
let originalObject = { name: "John" };
let copiedObject = JSON.parse(JSON.stringify(originalObject));
copiedObject.name = "Jane";
console.log(originalObject.name); // 출력 값: "John"
깊은 복사를 통해 copiedObject
의 값을 변경해도 originalObject
에는 영향을 주지 않음을 확인할 수 있습니다.
지적이나 질문이 있으시면 언제든지 알려주세요.