>웹 프론트엔드 >JS 튜토리얼 >자바스크립트 복제 객체 심층 소개_기본 지식

자바스크립트 복제 객체 심층 소개_기본 지식

WBOY
WBOY원래의
2016-05-16 17:48:011093검색

js에는 일반적으로 두 가지 다른 데이터 유형의 값이 있습니다.
값으로 전달되는 기본 유형(정의되지 않음, Null, 부울, 문자열, 숫자 포함)
주소로 전달되는 참조 유형(배열, 객체 포함) type은 값으로 전달될 때 메모리의 주소입니다.
복제 또는 복사는 두 가지 유형으로 나뉩니다.
얕은 복제: 기본 유형은 값으로 전달되고 객체는 여전히 참조로 전달됩니다.
심층 복제: 모든 요소나 속성이 완전히 복제되고 원래 참조 유형과 완전히 독립적입니다. 즉, 나중에 객체의 속성이 수정될 때 원래 객체는 수정되지 않습니다.

코드 복사 코드는 다음과 같습니다.

function cloneObject(obj){
var o = obj.constructor === 배열 ? [] : {};
for(var i in obj){
if(obj.hasOwnProperty(i)){
o[i] = typeof obj[i ] === "개체" ? cloneObject(obj[i]) : obj[i]
}
}
return o; >기타: 단순 배열이고 요소에 참조 유형 값이 없으면 array.concat() 또는 array.slice(0)을 직접 사용하여 간단하고 간단하게 배열을 복사할 수 있습니다. 효율적인. 배열 concat() 및 Slice()는 새 배열을 생성하며 원래 배열은 영향을 받지 않습니다. 하지만 복사된 배열의 요소에는 참조 유형 값이 없는지 확인해야 한다는 점에 유의해야 합니다.
이것은 매우 간단하고 실용적인 또 다른 심층 복제 방법입니다.



코드 복사
코드는 다음과 같습니다. var s = JSON.stringify( obj ) var o = JSON.parse( s );
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.