JavaScript 객체를 올바르게 복제하기: 종합 가이드
JavaScript 객체를 복제하려면 원본 객체에서 예상치 못한 수정을 방지하기 위한 미묘한 접근 방식이 필요합니다. 이 문서에서는 객체 복제의 복잡성을 분석하고 강력한 솔루션을 제시합니다.
내장 객체 복사의 과제
내장 JavaScript 객체 복제 시도(예: 날짜, 문자열)은 예상된 동작과 다를 수 있습니다. 예를 들어 Date 객체를 복제하면 원본 객체와 복제된 객체 사이에 시간 차이가 발생할 수 있습니다.
일반적인 Deep Copy 기능
포괄적인 복제 기능을 고려해야 합니다. 다양한 객체 유형과 숨겨진 속성에 대해 다음은 이러한 문제를 해결하는 예입니다.
function clone(obj) { var copy; // Handle simple types and null/undefined if (null == obj || typeof obj != "object") return obj; // Handle Dates if (obj instanceof Date) { copy = new Date(); copy.setTime(obj.getTime()); return copy; } // Handle Arrays if (obj instanceof Array) { copy = []; for (var i = 0, len = obj.length; i < len; i++) { copy[i] = clone(obj[i]); } return copy; } // Handle Objects if (obj instanceof Object) { copy = {}; for (var attr in obj) { if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]); } return copy; } throw new Error("Unable to copy obj! Its type isn't supported."); }
제한 사항 및 주의 사항
이 함수는 단순 유형, 트리 구조 데이터 및 순환이 없는 객체에 적합합니다. 참조. 그러나 다음을 포함하여 복잡한 객체를 처리할 때 제한이 있습니다.
현대적인 구조적 복제
ES2019는 다음을 포함하여 객체를 복제하는 보다 안정적이고 효율적인 방법을 제공하는 구조적 복제를 도입했습니다. 순환 참조. 단, 일부 브라우저에서는 지원되지 않을 수 있습니다.
위 내용은 다양한 데이터 유형과 잠재적인 위험을 처리하면서 JavaScript 개체를 올바르게 복제하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!