[javascript] 객체 순회를 통한 속성 복사하기

자바스크립트에서는 객체를 복사할 때 일반적으로 단순 복사를 하게 되면 참조에 의한 복사가 되어 의도치 않은 부작용이 발생할 수 있습니다. 따라서, 객체 속성을 안전하게 복사하려면 객체를 순회하면서 각 속성을 복사해야 합니다.

for...in 문을 사용한 객체 순회

가장 보편적으로 사용되는 방법은 for...in 문을 사용하여 객체를 순회하는 것입니다. 아래는 for...in 문을 사용하여 객체 속성을 차례대로 순회하고, 각 속성을 새로운 객체에 복사하는 예시입니다.

function copyObject(obj) {
  let copiedObj = {};
  for (let key in obj) {
    copiedObj[key] = obj[key];
  }
  return copiedObj;
}

Object.keys() 메서드를 사용한 객체 순회

for...in 문보다는 Object.keys() 메서드를 사용하는 것이 더 권장됩니다. 아래는 Object.keys() 메서드를 사용하여 객체를 순회하고, 각 속성을 새로운 객체에 복사하는 예시입니다.

function copyObject(obj) {
  let copiedObj = {};
  Object.keys(obj).forEach(key => {
    copiedObj[key] = obj[key];
  });
  return copiedObj;
}

각 방법 모두 객체를 복사하는 데 사용할 수 있으나, Object.keys() 메서드를 사용하는 방법이 일반적으로 선호됩니다.

즉, 객체를 안전하게 복사하려면 for...in 루프나 Object.keys() 메서드를 사용하여 객체를 순회하여야 하며, 각 속성을 복사한 새로운 객체를 반환해야 합니다.

이와 같은 방식으로, 객체를 안전하게 복사하여 의도치 않은 참조에 의한 복사를 방지할 수 있습니다.

참고 자료