Deep Copy는 상위 개체를 하위 개체에 복사하는 것이며, 두 복사본의 메모리 및 후속 작업은 서로 영향을 미치지 않습니다. 이 기사에서는 모든 사람에게 도움이 되기를 바라며 주로 JS Deep Copy 예제에 대한 논의를 공유합니다.
(1) 방법 1
function copy(obj1,obj2){ var obj2=obj2||{}; for(var name in obj1){ if(typeof obj1[name] === "object"){ //先判断一下obj[name]是不是一个对象 obj2[name]= (obj1[name].constructor===Array)?[]:{}; copy(obj1[name],obj2[name]); //然后来无限递归 }else{ obj2[name]=obj1[name]; //如果不是对象,直接赋值。 } } return obj2; }
사용법:
var obj1 = { se:[{a:1,b:2},{c:3}], sa:{a:"g"}, sc:function(){console.log(1)} }var n_obj = copy(obj1,{}) console.log(n_obj)
(2) 방법 2
function d_clone(obj) { return Object.getPrototypeOf(Object.create(obj)); }
사용법:
var obj1 = { se:[{a:1,b:2},{c:3}], sa:{a:"g"}, sc:function(){console.log(1)} }var n2_obj = d_clone(obj1); console.log(n2_obj)
(3) 방법 3
JSON.parse(JSON.stringify(obj)
참고: obj의 속성에는 함수가 포함될 수 없습니다.
(1) 방법 1
function copy(obj1,obj2){ var obj2=obj2||{}; for(var name in obj1){ if(typeof obj1[name] === "object"){ //先判断一下obj[name]是不是一个对象 obj2[name]= (obj1[name].constructor===Array)?[]:{}; copy(obj1[name],obj2[name]); //然后来无限递归 }else{ obj2[name]=obj1[name]; //如果不是对象,直接赋值。 } } return obj2; }
사용법:
var obj1 = { se:[{a:1,b:2},{c:3}], sa:{a:"g"}, sc:function(){console.log(1)} }var n_obj = copy(obj1,{}) console.log(n_obj)
(2) 방법 2
function d_clone(obj) { return Object.getPrototypeOf(Object.create(obj)); }
사용법:
var obj1 = { se:[{a:1,b:2},{c:3}], sa:{a:"g"}, sc:function(){console.log(1)} }var n2_obj = d_clone(obj1); console.log(n2_obj)
(3) 방법 3
JSON.parse(JSON.stringify(obj)
참고: obj의 속성에는 함수가 포함될 수 없습니다.
관련 권장 사항:
관련 권장 사항:
JavaScript 전체 복사 성능에 대한 심층적인 이해
JavaScript 얕은 복사와 얕은 복사의 차이점 딥 카피
위 내용은 js 딥 카피 예시에 대한 토론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!