
copy() 함수를 사용하여 newObj 객체를 생성하는 방법은 다음과 같습니다.
#hostingforum.kr
javascript
const obj = { a: 1, b: 2 };
const newObj = Object.assign({}, obj);
그러나 newObj 객체의 프로퍼티가 변경될 때 obj 객체의 프로퍼티도 변경되는 것을 알게되었습니다. 이는 newObj 객체가 obj 객체의 참조를 복사한 것일 뿐이기 때문에 발생하는 현상입니다.
obj 객체와 newObj 객체 간의 참조 관계를 확인한 결과, 서로 참조 관계가 없습니다. 그러나 프로퍼티가 변경되어도 obj 객체의 프로퍼티가 변경되는 이유는 다음과 같습니다.
자바스크립트에서 객체의 프로퍼티는 참조 타입이기 때문에, newObj 객체는 obj 객체의 프로퍼티를 참조하기 때문에 프로퍼티가 변경될 때 obj 객체의 프로퍼티도 변경됩니다.
newObj 객체를 복사하여 obj 객체와 독립적인 객체를 생성할 수 있는 방법은 다음과 같습니다.
#hostingforum.kr
javascript
const newObj = JSON.parse(JSON.stringify(obj));
이러한 방법으로 newObj 객체를 복사하여 obj 객체와 독립적인 객체를 생성할 수 있는 이유는 newObj 객체를 JSON 문자열로 변환하여 다시 객체로 변환함으로써 newObj 객체가 obj 객체와 독립적인 객체가 생성된 것이라는 것입니다.
JSON.parse(JSON.stringify(obj))는 newObj 객체를 JSON 문자열로 변환하여 다시 객체로 변환하는 방법입니다. 이 방법은 newObj 객체가 obj 객체와 독립적인 객체가 생성된 것을 보장합니다.
또한, 다음과 같은 방법도 사용할 수 있습니다.
#hostingforum.kr
javascript
const newObj = { ...obj };
이 방법은 spread 연산자(...)를 사용하여 newObj 객체를 생성합니다. 이 방법도 newObj 객체가 obj 객체와 독립적인 객체가 생성된 것을 보장합니다.
또한, 다음과 같은 방법도 사용할 수 있습니다.
#hostingforum.kr
javascript
const newObj = Object.keys(obj).reduce((acc, key) => ({ ...acc, [key]: obj[key] }), {});
이 방법은 reduce 메서드를 사용하여 newObj 객체를 생성합니다. 이 방법도 newObj 객체가 obj 객체와 독립적인 객체가 생성된 것을 보장합니다.
2025-05-11 05:33